Hallo zusammen und frohes neues Jahr,
ich hole mir Blockdefinitionen aus anderen Dateien mit diesem Programmteil:
(if (setq blocks (vla-get-blocks DBX))
(progn
(setq i -1)
(vlax-for ITEM blocks ;wenn Blockname aus Block_Collection in Liste, dann in temp-Liste
(if (member (strcase (vla-get-name ITEM))
(mapcar 'strcase namenliste)
)
(setq temp (cons ITEM temp))
)
(setq i (1+ i))
)
(if temp
(progn
(setq ARRAY (vl-catch-all-apply
'vlax-make-safearray
(list
vlax-vbObject
(cons 0 (1- (length temp)))
)
)
)
(setq i -1)
(mapcar '(lambda (A)
(vlax-safearray-put-element ARRAY (setq i (1+ i)) A)
)
temp
) ; Blöcke ARRAY zuweisen
(not (vl-catch-all-error-p
(vl-catch-all-apply
'vla-CopyObjects ;_ die Blockdefinitionen in die Zeichnung kopieren
(list ;_dabei evtl. Fehler abfangen
DBX
ARRAY
(vla-get-Blocks
(vla-get-activedocument (vlax-get-acad-object))
)
)
)
)
)
(princ
"\nEs wurden folgenden Blockdefinitionen in die Zeichnung eingefügt:"
)
(mapcar '(lambda (A)
(princ (strcat "\n" (vla-get-name A)))
)
(reverse temp)
)
)
(princ "\nEs wurden keine Blockdefinitionen eingefügt.")
)
(not (vl-catch-all-error-p
(vl-catch-all-apply
'vlax-release-object
(list DBX) ;_DBX-Verknüfung wieder freigeben
)
)
)
)
)
Wenn die Blockdefinition aber schon besteht wird sie leider nicht eretzt und genau das brauch ich aber.
Wenn ich die Blockdefinition mit WBLOCK rausgeschrieben habe und z.B. das mache:
(command "_.insert"
(strcat blk_name "=" datname)
"0,0"
"1"
""
"0"
)
wird die alte Definition überschrieben.
Das hätte ich gern über ODBX.
Geht das ?
Und wenn ja, wie ?
Danke
Gruß
Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP