+ Reply to Thread
Page 1 of 3 1 2 3 LastLast
Results 1 to 10 of 27
  1. #1
    Junior Member
    Discipline
    Mechanical
    jetxcc's Discipline Details
    Occupation
    I'm a drafter. I design roadway structures.
    Discipline
    Mechanical
    Using
    Mechanical 2018
    Join Date
    Sep 2017
    Location
    Missouri, USA
    Posts
    14

    Default dynamic block visibility lisp

    Registered forum members do not see this ad.

    Hello all,
    I've posted on SEVERAL forums trying to get an answer to this problem, I've compiled so many different Lisp routines that I've lost count, but none have quite been able to do what i want. i've attached a dwg with two blocks in it, the scope of what I'm trying to accomplish is at the bottom of this code:




    Code:
    (defun BKVZ ( / blk idx obj sel vis )
        
        (setq blk "WELD DETAIL" ;; Block Name
              vis "EQUAL WELD"  ;; New Visibility State
        )
        (if (setq sel (ssget "_X" (list '(0 . "INSERT") (cons 2 (strcat "`*U*," blk)))))
            (repeat (setq idx (sslength sel))
                (if (= (strcase blk) (strcase (LM:blockname (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx))))))))
                    (LM:SetVisibilityState obj vis)
                )
            )
        )
        (princ)
    )
    ;; I would like the visibility state of several different dynamic blocks
    ;; to reference a text field within the drawing, and the blk variable to be used for several different dynamic
    ;; blocks within my drawing. for example in this drawing i have two dynamic blocks, and two text fields that
    ;; represent the visibility states that i want to use for the blocks (this value will change so i want to use it as a
    ;; variable to change the db viz prop) . I would like to be able to use this code to change the vis states of
    ;; several blocks within the same dwg, each of which would have a text field that will display the present vis state.
    ;; if i have to use setq blk1, blk2, blk3, etc to represent each block that is fine, but with several different possible
    ;; vis states, i would like that varible to reference the text field. so as the text field changes, so does the vis state of the
    ;; dynamic block.

    ANY HELP WOULD BE APPRECIATED. THANK YOU!!
    Attached Files
    Last edited by SLW210; 20th Dec 2017 at 01:06 pm.

  2. #2
    Super Moderator SLW210's Avatar
    Computer Details
    SLW210's Computer Details
    Operating System:
    Windows 7 PRO 64-bit
    Computer:
    IBM Lenovo
    Motherboard:
    ACPI x64
    CPU:
    Pentium(R) i5 4570 @ 3.2GHz
    RAM:
    8 GB RAM
    Graphics:
    Nvidia Quadro 600 1GB
    Primary Storage:
    300 GB
    Secondary Storage:
    650GB
    Monitor:
    2x ThinkVision 24"
    Discipline
    Multi-disciplinary
    SLW210's Discipline Details
    Occupation
    Design Draftsman
    Discipline
    Multi-disciplinary
    Details
    Mostly do drafting related to manufacturing. From doing site layouts with proposed updates, additions and renovations to be budgeted and submitted for bid, to updating and changing existing drawings to reflect maintenance and repair/revision work done on site.
    Using
    AutoCAD 2018
    Join Date
    May 2007
    Location
    South Florida, USA
    Posts
    12,128

    Default

    Please read the Code Posting Guidelines and edit your Code to be included in Code Tags.[CODE]Your Code Here[/CODE] =
    Code:
    Your Code Here
    “A narrow mind and a fat head invariably come on the same person” Zig Zigler



  3. #3
    Junior Member
    Discipline
    Mechanical
    jetxcc's Discipline Details
    Occupation
    I'm a drafter. I design roadway structures.
    Discipline
    Mechanical
    Using
    Mechanical 2018
    Join Date
    Sep 2017
    Location
    Missouri, USA
    Posts
    14

    Default

    @SLW210 My apologies.

    Hello all,
    I've posted on SEVERAL forums trying to get an answer to this problem, I've compiled so many different Lisp routines that I've lost count, but none have quite been able to do what i want. i've attached a dwg with two blocks in it, the scope of what I'm trying to accomplish is at the bottom of this code:

    Code:
    (defun BKVZ ( / blk idx obj sel vis )
    
    (setq blk "WELD DETAIL" ;; Block Name
    vis "EQUAL WELD" ;; New Visibility State
    )
    (if (setq sel (ssget "_X" (list '(0 . "INSERT") (cons 2 (strcat "`*U*," blk)))))
    (repeat (setq idx (sslength sel))
    (if (= (strcase blk) (strcase (LM:blockname (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx))))))))
    (LM:SetVisibilityState obj vis)
    )
    )
    )
    (princ)
    )
    I would like the visibility state of several different dynamic blocks to reference a text field within the drawing, OR an attribute field within the block, and the blk variable to be used for several different dynamic
    ;; blocks within my drawing. for example in this drawing i have two dynamic blocks, and two text fields that
    ;; represent the visibility states that i want to use for the blocks (this value will change so i want to use it as a
    ;; variable to change the db viz prop) . I would like to be able to use this code to change the vis states of
    ;; several blocks within the same dwg, each of which would have a text field that will display the present vis state.
    ;; if i have to use setq blk1, blk2, blk3, etc to represent each block that is fine, but with several different possible
    ;; vis states, i would like that varible to reference the text field. so as the text field changes, so does the vis state of the
    ;; dynamic block.

    ANY HELP WOULD BE APPRECIATED. THANK YOU!!

  4. #4
    Junior Member
    Discipline
    Mechanical
    jetxcc's Discipline Details
    Occupation
    I'm a drafter. I design roadway structures.
    Discipline
    Mechanical
    Using
    Mechanical 2018
    Join Date
    Sep 2017
    Location
    Missouri, USA
    Posts
    14

    Default

    apologies. I corrected my posting faux pas.

  5. #5
    Junior Member
    Discipline
    Mechanical
    jetxcc's Discipline Details
    Occupation
    I'm a drafter. I design roadway structures.
    Discipline
    Mechanical
    Using
    Mechanical 2018
    Join Date
    Sep 2017
    Location
    Missouri, USA
    Posts
    14

    Default

    SO AT LONG LAST... I HAVE IT!!! well.... ALMOST!!!
    Need help with this one last thing....
    when this code is ran in a dwg with dynamic blocks that has attributes it puts out a list of dotted pairs in the format (block handle . attribute value) Here is the output for my particular dwg. after running the code.

    ((1153D . FULL PEN-6-HOLE) (1154E . EQ. WELD) (1216E . NO HOLE) (12DD5 . VERT-STRAIGHT(>/= 10.75 O.D.)) (1FD4A . SC1) (201C5 . EQ. WELD))



    Code:
    (defun StVz (/ ss eLst bEnt aEnt aEntLst aVal blkLst) ; Define the function, localize the variables
      
      (vl-load-com) ; Load the Visual LISP console (allows vl-... commands)
      
      (if ; If there exists a selection set such that:
        (setq ss (ssget "X" ; "X" meaning search entire database for entities with:
                  (list (cons 0 "INSERT") ; type: INSERT (Blocks, XRefs)
                    (cons 66 1) ; Attributed
                    (if    (getvar "CTAB") ; If there is a variable "CTAB" (newer releases - determines Model Space/Paper Space
                      (cons 410 (getvar "CTAB")) ; Then filter by the CTAB variable
                      (cons 67 (- 1 (getvar "TILEMODE"))) ; Otherwise use TILEMODE variable to filter.
                    ) ; end if
                  ) ; end list [Filter List]
              ) ; end Selection set aquirement [ssget]
          ) ; end Variable Setting [Selection set stored in variable "ss"]
        (progn ; Wrap the following code for use in the IF statement:
          (setq eLst ; Store the following list of entity names to variable "eLst"
            (vl-remove-if 'listp ; Remove from the list if the item is a List
              (mapcar 'cadr ; Produce a list of entity names (and possible coord values) from
                  (ssnamex ss) ; Information provided by "ssnamex" about the Selection Set
                  ) ; end Mapcar
              ) ; end vl-remove-if
            ) ; end variable setting
          (foreach e eLst ; For Each item (e) in the eLst (entity name list):
        (setq bEnt (cdr (assoc 5 (entget e))) ; Retrieve the Block Name [store to "bEnt"]
              aEnt (entnext e) ; Retrieve the Attribute Entity Name [Store to aEnt]
        ) ; end Variable setting
        (while (= "ATTRIB" (cdr (assoc 0 (setq aEntLst (entget aEnt))))) ; While the Entity Type is "ATTRIB"[ute]
          (if (= (cdr (assoc 2 aEntLst)) "AFVIZ") ; If the ATTRIBute name is "AFVIZ"
            (progn ; wrap the following for use with the IF
              (setq aVal  (cdr (assoc 1 aEntLst)) ; Store the ATTRIBute value [to aVal]
                blkLst (cons
                    (cons bEnt aVal) ; Create an Associative list (dotted pair) of Block Name and Att. Value.
                    blkLst) ; Connect this to the main list
                    ) ; End Variable Setting
            ) ; end Progn (code wrapper)
          ) ; end IF
          (setq aEnt (entnext aEnt)) ; Move onto next Attribute in Block
        ) ; End While
          ) ; End Foreach
        ) ; End Progn
        (princ "\n<!> No Attributed Blocks Found <!>") ; If No Selection Set, then No Attributed Blocks Found in Drawing.
      ) ; End IF
      (PROMPT (vl-princ-to-string blkLst)) ; Convert the Associative List to a String and Alert it in a Dialog Box to view result.
      (princ) ; Exit Cleanly - [Suppress last function return]
    ) ; End Function
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    I want to combine the above code with THIS code to set the dynamic block, that's listed by its handle, the first element of the pairs, to the visibility state that is the attribute value, the second element of the pairs, the vis state is a field that references an Excel worksheet entry. In the following code towards the top, there is a setq blk function with that says "WELD DETAIL" I would like the first element of each pair to be put into this place. and for the setq vis function "EQUAL WELD" I would like the second element of the list to be here, as this tells the following code what to change the visibility to. Both of these codes work independently, but the second one has to have the values put into them at the top to tell it WHICH block and WHICH visibility state to apply it to. I would like these two codes to run in tandem without any user input, and applicable to ALL dynamic blocks within the dwg. SSSOOOOooooo..... my question is.... how do I get that to happen?

    Code:
    (defun BkVz ()
     
        (setq blk "WELD DETAIL" ;; Block Name
              vis "EQUAL WELD"    ;; New Visibility State
        )
        (if (setq sel (ssget "_X" (list '(0 . "INSERT") (cons 2 (strcat "`*U*," blk)))))
            (repeat (setq idx (sslength sel))
                (if (= (strcase blk) (strcase (LM:blockname (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx))))))))
                    (LM:SetVisibilityState obj vis)
                )
            )
        )
        (princ)
    )
    
    ;; Block Name  -  Lee Mac
    ;; Returns the true (effective) name of a supplied block reference
                            
    (defun LM:blockname ( obj )
        (if (vlax-property-available-p obj 'effectivename)
            (defun LM:blockname ( obj ) (vla-get-effectivename obj))
            (defun LM:blockname ( obj ) (vla-get-name obj))
        )
        (LM:blockname obj)
    )
    
    ;; Set Dynamic Block Visibility State  -  Lee Mac
    ;; Sets the Visibility Parameter of a Dynamic Block (if present) to a specific value (if allowed)
    ;; blk - [vla] VLA Dynamic Block Reference object
    ;; val - [str] Visibility State Parameter value
    ;; Returns: [str] New value of Visibility Parameter, else nil
    
    (defun LM:SetVisibilityState ( blk val / vis )
        (if
            (and
                (setq vis (LM:getvisibilityparametername blk))
                (member (strcase val) (mapcar 'strcase (LM:getdynpropallowedvalues blk vis)))
            )
            (LM:setdynpropvalue blk vis val)
        )
    )
    
    ;; Set Dynamic Block Property Value  -  Lee Mac
    ;; Modifies the value of a Dynamic Block property (if present)
    ;; blk - [vla] VLA Dynamic Block Reference object
    ;; prp - [str] Dynamic Block property name (case-insensitive)
    ;; val - [any] New value for property
    ;; Returns: [any] New value if successful, else nil
    
    (defun LM:setdynpropvalue ( blk prp val )
        (setq prp (strcase prp))
        (vl-some
          '(lambda ( x )
                (if (= prp (strcase (vla-get-propertyname x)))
                    (progn
                        (vla-put-value x (vlax-make-variant val (vlax-variant-type (vla-get-value x))))
                        (cond (val) (t))
                    )
                )
            )
            (vlax-invoke blk 'getdynamicblockproperties)
        )
    )
    
    ;; Get Dynamic Block Property Allowed Values  -  Lee Mac
    ;; Returns the allowed values for a specific Dynamic Block property.
    ;; blk - [vla] VLA Dynamic Block Reference object
    ;; prp - [str] Dynamic Block property name (case-insensitive)
    ;; Returns: [lst] List of allowed values for property, else nil if no restrictions
    
    (defun LM:getdynpropallowedvalues ( blk prp )
        (setq prp (strcase prp))
        (vl-some '(lambda ( x ) (if (= prp (strcase (vla-get-propertyname x))) (vlax-get x 'allowedvalues)))
            (vlax-invoke blk 'getdynamicblockproperties)
        )
    )
    
    ;; Get Visibility Parameter Name  -  Lee Mac
    ;; Returns the name of the Visibility Parameter of a Dynamic Block (if present)
    ;; blk - [vla] VLA Dynamic Block Reference object
    ;; Returns: [str] Name of Visibility Parameter, else nil
    
    (defun LM:getvisibilityparametername ( blk / vis )  
        (if
            (and
                (vlax-property-available-p blk 'effectivename)
                (setq blk
                    (vla-item
                        (vla-get-blocks (vla-get-document blk))
                        (vla-get-effectivename blk)
                    )
                )
                (= :vlax-true (vla-get-isdynamicblock blk))
                (= :vlax-true (vla-get-hasextensiondictionary blk))
                (setq vis
                    (vl-some
                      '(lambda ( pair )
                            (if
                                (and
                                    (= 360 (car pair))
                                    (= "BLOCKVISIBILITYPARAMETER" (cdr (assoc 0 (entget (cdr pair)))))
                                )
                                (cdr pair)
                            )
                        )
                        (dictsearch
                            (vlax-vla-object->ename (vla-getextensiondictionary blk))
                            "ACAD_ENHANCEDBLOCK"
                        )
                    )
                )
            )
            (cdr (assoc 301 (entget vis)))
        )
    )
    
    (vl-load-com) (princ)
    THANK YOU TO ANYONE THAT CAN OR TRIES TO HELP OR OFFERS SUGGESTIONS!!

  6. #6
    Super Member rlx's Avatar
    Computer Details
    rlx's Computer Details
    Operating System:
    W10
    Computer:
    i74ghz/ssd500/2tbhdd
    Discipline
    Electrical
    rlx's Discipline Details
    Occupation
    electrical designer dragon
    Discipline
    Electrical
    Details
    I dont excel in anything but I rearly give up
    Using
    AutoCAD 2016
    Join Date
    Nov 2014
    Location
    Bergen op Zoom , Netherlands
    Posts
    1,068

    Default

    totally untested and assuming your list is valid


    Code:
    
    (defun tst ( / in-my-list block-record blk )
      (setq in-my-list 
         '(("1153D" . "FULL PEN-6-HOLE")  ("1154E" . "EQ. WELD") ("1216E" . "NO HOLE")
            ("12DD5" . "VERT-STRAIGHT(>/= 10.75 O.D.)") ("1FD4A" . "SC1") ("201C5" . "EQ. WELD")))
      (foreach block-record in-my-list
        (if (setq blk (handent (car block-record)))
          (LM:SetVisibilityState (vlax-ename->vla-object blk) (cdr block-record))
          (princ "\nBlock handle not found")
        )
      )
    )
    Last edited by rlx; 22nd Dec 2017 at 07:15 am.

  7. #7
    Junior Member
    Discipline
    Mechanical
    jetxcc's Discipline Details
    Occupation
    I'm a drafter. I design roadway structures.
    Discipline
    Mechanical
    Using
    Mechanical 2018
    Join Date
    Sep 2017
    Location
    Missouri, USA
    Posts
    14

    Default

    RLX.... we... (you) are sooo close!!!! that worked beautifully!!! except that I want the list that is produced by the first code to take the place of the list I provided, since every dwg will have different blocks, with different names and so forth. The list
    ""'(("1153D" . "FULL PEN-6-HOLE") ("1154E" . "EQ. WELD") ("1216E" . "NO HOLE")("12DD5" . "VERT-STRAIGHT(>/= 10.75 O.D.)") ("1FD4A" . "SC1") ("201C5" . "EQ. WELD")))""
    was just the current output of the blocks in the dwg that i am working on. how do i get your code to look at the associated list produced by the first code? I hope that makes sense...

  8. #8
    Super Member rlx's Avatar
    Computer Details
    rlx's Computer Details
    Operating System:
    W10
    Computer:
    i74ghz/ssd500/2tbhdd
    Discipline
    Electrical
    rlx's Discipline Details
    Occupation
    electrical designer dragon
    Discipline
    Electrical
    Details
    I dont excel in anything but I rearly give up
    Using
    AutoCAD 2016
    Join Date
    Nov 2014
    Location
    Bergen op Zoom , Netherlands
    Posts
    1,068

    Default

    still not fully recoverd from xmas and new year so not operating at peak efficiency... but if I understand correctly you just want to pass the list generated from your 1st code as a parameter to the last code?

    Code:
    (defun tst ( your-list / block-record blk )
      (foreach block-record your-list
        (if (setq blk (handent (car block-record)))
          (LM:SetVisibilityState (vlax-ename->vla-object blk) (cdr block-record))
          (princ "\nBlock handle not found")
         )
      )
    )
    just use : (tst your-list)

    but its late and I have a dangerously low concentration of red wine in my blood so maybe I'm thinking to simple right now?

    gr. Rlx

  9. #9
    Junior Member
    Discipline
    Mechanical
    jetxcc's Discipline Details
    Occupation
    I'm a drafter. I design roadway structures.
    Discipline
    Mechanical
    Using
    Mechanical 2018
    Join Date
    Sep 2017
    Location
    Missouri, USA
    Posts
    14

    Default

    lol. I totally understand!! had a rough one myself!!

    and yes, the resulting list of running the first code the one that starts with the (defun StVz) I think my other code (defun BkVz) is obsolete using your code. I'm not sure which list I need to use as the variable in your code. In the STVZ code it creates 5 different list called eLst, bEnt, Aent, aEntLst, and blkLst. I assumed that the list that I needed to put in place of "your-list" would be blkLst. but that doesn't seem to be the case. I've tried the others as well, with no luck. I'm sure it's something stupidly simple...but I can't hammer it down....

  10. #10
    Super Member rlx's Avatar
    Computer Details
    rlx's Computer Details
    Operating System:
    W10
    Computer:
    i74ghz/ssd500/2tbhdd
    Discipline
    Electrical
    rlx's Discipline Details
    Occupation
    electrical designer dragon
    Discipline
    Electrical
    Details
    I dont excel in anything but I rearly give up
    Using
    AutoCAD 2016
    Join Date
    Nov 2014
    Location
    Bergen op Zoom , Netherlands
    Posts
    1,068

    Default

    Registered forum members do not see this ad.

    Quote Originally Posted by jetxcc View Post
    lol. I totally understand!! had a rough one myself!!

    and yes, the resulting list of running the first code the one that starts with the (defun StVz) I think my other code (defun BkVz) is obsolete using your code. I'm not sure which list I need to use as the variable in your code. In the STVZ code it creates 5 different list called eLst, bEnt, Aent, aEntLst, and blkLst. I assumed that the list that I needed to put in place of "your-list" would be blkLst. but that doesn't seem to be the case. I've tried the others as well, with no luck. I'm sure it's something stupidly simple...but I can't hammer it down....
    I have no drawing to test your routine because the one from your first post just gives "\n<!> No Attributed Blocks Found <!>" but the list to use should be BlkLst

    Code:
    (defun stvz  (/ ss elst bent aent aentlst aval blklst) ; Define the function, localize the variables
      (vl-load-com) ; Load the Visual LISP console (allows vl-... commands)
      (if ; If there exists a selection set such that:
        (setq ss (ssget "X" ; "X" meaning search entire database for entities with:
                (list (cons 0 "INSERT") ; type: INSERT (Blocks, XRefs)
                  (cons 66 1) ; Attributed
                  (if (getvar "CTAB") ; If there is a variable "CTAB" (newer releases - determines Model Space/Paper Space
                    (cons 410 (getvar "CTAB")) ; Then filter by the CTAB variable
                    (cons 67 (- 1 (getvar "TILEMODE"))) ; Otherwise use TILEMODE variable to filter.
                    ) ; end if
                  ) ; end list [Filter List]
                ) ; end Selection set aquirement [ssget]
          ) ; end Variable Setting [Selection set stored in variable "ss"]
         (progn ; Wrap the following code for use in the IF statement:
           (setq elst ; Store the following list of entity names to variable "eLst"
              (vl-remove-if
            'listp ; Remove from the list if the item is a List
            (mapcar    'cadr ; Produce a list of entity names (and possible coord values) from
                (ssnamex ss) ; Information provided by "ssnamex" about the Selection Set
                ) ; end Mapcar
            ) ; end vl-remove-if
             ) ; end variable setting
           (foreach    e  elst ; For Each item (e) in the eLst (entity name list):
         (setq bent (cdr (assoc 5 (entget e))) ; Retrieve the Block Name [store to "bEnt"] **** 5 = block handle
               aent (entnext e) ; Retrieve the Attribute Entity Name [Store to aEnt]
               ) ; end Variable setting
         (while    (= "ATTRIB" (cdr (assoc 0 (setq aentlst (entget aent))))) ; While the Entity Type is "ATTRIB"[ute]
           (if (= (cdr (assoc 2 aentlst)) "AFVIZ") ; If the ATTRIBute name is "AFVIZ"
             (progn ; wrap the following for use with the IF
               (setq aval   (cdr (assoc 1 aentlst)) ; Store the ATTRIBute value [to aVal]
                 blklst (cons (cons bent aval) ; Create an Associative list (dotted pair) of Block Name and Att. Value.
                      blklst) ; Connect this to the main list
                 ) ; End Variable Setting
               ) ; end Progn (code wrapper)
             ) ; end IF
           (setq aent (entnext aent)) ; Move onto next Attribute in Block
           ) ; End While
         ) ; End Foreach
           ) ; End Progn
         (princ "\n<!> No Attributed Blocks Found <!>") ; If No Selection Set, then No Attributed Blocks Found in Drawing.
         ) ; End IF
     ;(PROMPT (vl-princ-to-string blkLst)) ; Convert the Associative List to a String and Alert it in a Dialog Box to view result.
      (foreach item     blklst  ; ***** added function here and replaced 'block-record' with 'item' BlkLst should have form ((handle1 . attribute) (handle2 . attribute) ...) but only if ssget can find them!
        (if    (setq blk (handent (car item)))
          (lm:setvisibilitystate (vlax-ename->vla-object blk) (cdr item))
          (princ "\nBlock handle not found")))
      (princ) ; Exit Cleanly - [Suppress last function return]
      ) ; End Function
    well almost time for bed for me ... gr. Rlx

Similar Threads

  1. Dynamic block, Visibility states
    By mgrenier25 in forum AutoCAD Drawing Management & Output
    Replies: 1
    Last Post: 21st Mar 2017, 02:14 pm
  2. LISP to replace blocks with Dynamic block with set visibility states.
    By Glen1980 in forum AutoLISP, Visual LISP & DCL
    Replies: 5
    Last Post: 15th Oct 2015, 05:33 pm
  3. lisp to change dynamic block visibility
    By woodman78 in forum AutoLISP, Visual LISP & DCL
    Replies: 7
    Last Post: 5th Mar 2013, 12:39 am
  4. change the visibility list of a dynamic block by lisp
    By alijahed in forum AutoLISP, Visual LISP & DCL
    Replies: 3
    Last Post: 24th May 2010, 01:55 am
  5. Dynamic block name - Visibility states
    By W3D in forum AutoCAD Drawing Management & Output
    Replies: 5
    Last Post: 29th Jan 2010, 08:48 pm

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts