 |
Lisp : Insert verschieben in anderen Insert
HPW am 21.08.2017 um 18:01 Uhr (15)
Hallo,Ich habe eine Anzahl Inserts auf der obersten Ebene.Um die eigentliche Struktur besser darzustellen möchte ich nun einige Inserts in einen anderen Insert verschieben.Also ein Insert wird zum Haupt-Insert auf der obersten Ebene und die Subinserts werden in den Haupt-Insert verschachtelt und sind nicht mehr auf der obersten Ebene.Für dieeses nachträgliche Verschieben suche ich eine Lisp-Funktion die die beiden Handles übergeben bekommt und die Verschachtelung ausführt. Grafisch soll sich dabei nichts ä ...
|
| In das Form Lisp wechseln |
|
Lisp : Insert verschieben in anderen Insert
HPW am 22.08.2017 um 11:53 Uhr (1)
Hallo,Habe da was gefunden:http://ww3.cad.de/foren/ubb/Forum54/HTML/009903.shtmlDie SubBlöcke enthalten auch Atrribute.Muss weiter suchen.Grüsse,------------------Hans-Peter
|
| In das Form Lisp wechseln |
 |
Lisp : Insert verschieben in anderen Insert
HPW am 22.08.2017 um 08:15 Uhr (15)
Hallo,Danke für den Hinweiss. Werde es testen.Grüsse,Hans-Peter------------------Hans-Peter
|
| In das Form Lisp wechseln |
 |
Lisp : Insert verschieben in anderen Insert
HPW am 22.08.2017 um 15:51 Uhr (15)
Hallo,Danke für den Tip.Ich denke das es das sein wird.Ich hatte gerade einen Block händisch erzeugt mit denselben Inserts und dann die Daten ausgelesen. Da stehen dann die Attribute und das SEQEND dazwischen. Werde es testen.Grüsse,------------------Hans-Peter
|
| In das Form Lisp wechseln |
|
Lisp : Insert verschieben in anderen Insert
HPW am 22.08.2017 um 14:31 Uhr (1)
Hallo,Entschuldigung wenn ich es nicht klar genug beschrieben habe.Im Post 8 hatte ich sowohl die jeweilige entmake-Liste ausgegeben als auch die Fehlermeldung: Ungültiges komplexes Objekt.Im Post 10 dann der code mit den princ-Ausgaben die zum Post 8 paasen.Was fehlt dazu noch?Grüsse,------------------Hans-Peter[Diese Nachricht wurde von HPW am 22. Aug. 2017 editiert.]
|
| In das Form Lisp wechseln |
|
Lisp : Insert verschieben in anderen Insert
HPW am 23.08.2017 um 12:01 Uhr (1)
Hallo,Danke nochmal an alle die mir geduldig auf den richtigen Weg geholfen haben.Ich hatte noch etwas zu kämpfen, aber jetzt funktioniert es.Man muss verstehen das an den neuen Haupt-Block ATTDEF dran gehängt werden müssen und an die INSERTS aber die ATTRIB. Die muss man dann auch erst mal ermitteln. Das Transformieren des Einfügepunkts der Inserts ins Block-Koordinaten-Systems war nach obigen Hinweisen auch möglich. Zum Schluss noch Weglöschen der INSERTS auf der Hauptebene und gut wars.Grüsse,---------- ...
|
| In das Form Lisp wechseln |
|
Lisp : Insert verschieben in anderen Insert
HPW am 21.08.2017 um 18:58 Uhr (1)
Hallo,Naja die Frage war: ...eine Lisp-Funktion die die beiden Handles übergeben bekommt und die Verschachtelung ausführt.Code habe ich noch nicht. Ich habe schon mal eine Funktion programmiert die einen Block durchliesst und Entyties darin mit (entmod .) modifiziert.Habe auch schon bei meiner Suche code gesehen wo mit entmake neue Blöcke erstellt wurden.Was jetzt der beste Weg ist einen vorhandenen Block um einen Sub-Block zu erweitern, da fehlt mir der Ansatz wie das am besten gemacht wird.Grüsse,Hans-Pe ...
|
| In das Form Lisp wechseln |
|
Lisp : Insert verschieben in anderen Insert
HPW am 22.08.2017 um 11:38 Uhr (1)
Hallo,Habe nun ein Problem:Code:ent_info1 : ((0 . INSERT) (330 . Objektname: 7efec4d0) (5 . 140D8) (100 . AcDbEntity) (67 . 0) (8 . KCAD) (100 . AcDbBlockReference) (2 . GEN22B0C0ABJVE9) (10 0.0 0.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))ent_info2 : ((0 . INSERT) (330 . Objektname: 7efe0240) (5 . 1433C) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . kcadsbg) (100 . AcDbBlockReference) (66 . 1) (2 . INT225751_[__200.010]_J5253_DK_1_1_1) (10 ...
|
| In das Form Lisp wechseln |
|
Lisp : Insert verschieben in anderen Insert
HPW am 22.08.2017 um 11:48 Uhr (1)
Code: (setq OldBlockName (strcase (cdr (assoc 2 (entget HposEnt))))) ; (setq rewind T) ; (while (setq Info (tblnext "BLOCK" rewind)) ; (setq BlockName (strcase (cdr (assoc 2 Info)))) ; (if (= OldBlockName BlockName) ; (setq BlockInfo Info) ; ) ; (setq rewind nil) ; ) ;ende while (if BlockInfo ; (progn ; (setq ent_name (cdr (assoc -2 BlockInfo))) ;; header definition: (entmake ; (list (cons 0 "BLOCK") ; (cons 2 NewBlockName) ; (con ...
|
| In das Form Lisp wechseln |