Code:
;| ToggleSofDims oder TSDschaltet bei der gewählten Bemaßung
die SOFiCAD- oder AutoCAD-Maßhilflinien um
www.CADmaro.de
|;
(defun c:ToggleSofDims (/ newprops dim)
;; Zu toggelnde Eigenschaften für Bemaßungsenden festlegen
(setq newprops
'((Arrowhead1Block . "_Oblique") ; Maßendblock1
(Arrowhead2Block . "_Oblique") ; Maßendblock2
(ArrowheadSize . 0.0125) ; Maßendblockgröße
(DimensionLineExtend . 0.0125) ; Maßlinienüberstand
(ExtensionLineExtend . 0.0125) ; Maßhilfslinienüberstand
)
)
(while (and
(setq dim (entsel))
(wcmatch
(strcase
(vlax-get-property
(setq dim (vlax-ename->vla-object (car dim)))
'ObjectName
)
)
"*DIMENSION"
)
)
(if *props*
(mapcar
'(lambda (arg)
(if (= (vlax-get-property dim 'ObjectID) (car arg))
(setq newprops (cdr arg)
*props* (mx:RemoveElementFromList *props* arg)
)
)
)
*props*
)
)
(setq *props*
(cons
(cons
(vlax-get-property dim 'ObjectID)
(mx:GetSetProperties
newprops
dim
)
)
*props*
)
)
(vlax-put-property
dim
'ExtLine1Suppress
(if
(= 20 (vlax-get-property dim 'Arrowhead1Type))
:vlax-true
:vlax-false
)
)
(vlax-put-property
dim
'ExtLine2Suppress
(if
(= 20 (vlax-get-property dim 'Arrowhead2Type))
:vlax-true
:vlax-false
)
)
)
)
;| mx:GetSetProperties
Eigenschaften setzen und die vorherigen Eigenschaften zurückgeben.
angepasst für Maßendblock-Bezeichnungen.
|;
(defun mx:GetSetProperties (props obj / oldprops)
(mapcar
'(lambda (arg)
(setq oldprops
(cons
(cons
(car arg)
(vlax-get-property obj (vl-princ-to-string (car arg)))
)
oldprops
)
)
(vlax-put-property
obj
(vl-princ-to-string (car arg))
;; Unterstrich an Endmarkierung pappen :dream
(if (and
(= 'STR (type (cdr arg)))
(/= "_" (substr (cdr arg) 1 1))
(/= "SOF" (substr (cdr arg) 1 3))
)
(strcat "_" (cdr arg))
(cdr arg)
)
)
)
props
)
oldprops
)
;| mx:RemoveElementFromList
Element aus Liste entfernen
|;
(defun mx:RemoveElementFromList (lst el)
(append
(reverse (cdr (member el (reverse lst))))
(cdr (member el lst))
)
)
(defun c:TSD () (c:ToggleSofDims) (princ))
(princ "\nToggleSOFDims.lsp geladen zum Starten \"TSD\" eingeben.")
(princ)