Hallo,
folgendes Problem mit LISP unter BricsCAD (getestet mit V15 und V16):
Ich erstelle mit diversen Funktionen einige Elemente und packe diese dann in einen Block. Da das evtl. ziemlich viele Blöcke werden, kam mir jetzt der Gedanke, dass ich auch unbenannte Blöcke nutzen könnte.
Ich erstelle also das Grundgerüst für den Block mit ENTMAKE:
Code:
(entmake
(list
(cons 0 "BLOCK")
(cons 70 1)
(cons 2 "*U")
(cons 10 (list 0.0 0.0 0.0))
)
)
Dann kommen die Elemente im Block... Und da die ja schon in der Zeichnung sind und teilweise recht aufwändig und viele werden können, kam ich auf die Idee es so zu machen:
Code:
(repeat (sslength olist)
(entmake (entget (ssname olist countr)))
(entdel (ssname olist countr))
(setq countr (+ 1 countr))
)
Jetzt noch abschließen, und der unbenannte Block ist fertig:
Code:
(setq blk (entmake (list (cons 0 "ENDBLK"))))
Funktioniert alles erst einmal soweit wunderbar... Der unbenannte Block wird erstellt und ich kann ihn auch einfügen.
Und jetzt kommt das Problem:
Unter den Elementen sind recht häufig Schraffuren mit selbst erstellten (angepassten) Schraffurmustern.
Und bei diesen funktioniert das (entmake (entget ...)) nicht.
Der GK 76, der ja für angepasste Schraffuren auf 2 stehen muss, wird immer auf 1 umgestellt.
Aber auch wenn ich danach mit ENTMOD den GK 76 auf 2 stelle, wird das Muster nicht korrekt dargestellt.
Das übergeben der kompletten Entity-Liste inklusive GK -1, 5, usw. ist wohl kein super sauberer Programmierstil, aber das ist hier nicht das Problem...
Auch ein ENTMAKE mit einer bereinigten Liste funktioniert nicht.
Unter ACAD (2017) habe ich dieses Problem nicht. Hier ist die "kopierte" Schraffur mit dem original identisch.
Kann jemand dieses Verhalten bestätigen?
Hat jemand eine Idee, wie man das lösen kann? Mache ich einen Fehler?
Danke schon mal
Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP