| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Polylinien abhängig vom Startpunkt versetzen (3144 mal gelesen)
|
m.hacker Mitglied
Beiträge: 8 Registriert: 26.08.2015
|
erstellt am: 28. Aug. 2015 12:21 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich hab im Forum leider nichts gefunden. Ein Paar Beiträge klangen ähnlich, haben aber leider nicht zum Ziel geführt. Mein Problem ist Folgendes. Ich habe mehrere Polylinien. Ich wähle alle Polylinien aus die ich versetzten möchte. Dann sollen diese abhängig vom Startpunkt versetzt werden. vereinfachtes Beispiel: Wenn die Polylinie von Nord nach Süd gezeichnet ist -> Versatz erfolgt nach Westen. Ist die Polylinie von Süd nach Nord gezeichnet -> Versatz erfolgt nach Osten. Also eigentlich immer rechts von der Polylinie. Bei geschlossenen Polygonen. Startpunkt und Endpunkt ist identisch. Das Polygon wird im Uhrzeigersinn gezeichnet versatz nach innen. Gegen den Uhrzeiger versatz nach außen. Ich weis nicht wie ich es angehen soll, oder ob es überhaupt möglich ist so etwas umzusetzen. Ich hoffe Ihr könnt mir weiterhelfen.
[Diese Nachricht wurde von m.hacker am 31. Aug. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 28. Aug. 2015 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Auf das Versetzen gehe ich mal nicht ein, ich denke du nutzt dafür sowieso den AutoCAD -Befehl? Ohne eine Ahnung zu haben "wo du stehst" ist es schwierig dich abzuholen? Ist dir bekannt das es verschiedene "Polylinien" Objekte gibt, das Polylinien auch die Eigeschaft"geschlossen" haben(in dem Fall hätte deine Polylinie einen unnötigen letzten Scheitelpunkt). Zu der Berechnung von Links/Rechts usw. suche nach Seiten im www zur Berechnung "Punkt in Polylinie" / Point inside polyline. Darüber kommst du zu allen Informationen, bedenke dabei das es weniger um die Programmiersprache, als um Mathe geht. Also offene und geschlossene PL usw. ist egal, wenn man mit dem Suchbegriff startet kommt man ohnehin zu allmöglichen Artikeln. Das Thema ist von Null an gestartet erst mal recht komplex und da ich gerade mit dem Handy unterwegs bin suche/poste ich jetzt keine Links, das macht mit dem Tickerding nicht so viel Spaß Nehme dir EINE der Aufgaben vor, lese dich ein und versuche es in Lisp umzusetzen, wenn es nicht weiter geht kannst du hier die konkrete Aufgabe und Lösungsansatz Posten, es hilft sicher wer weiter. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m.hacker Mitglied
Beiträge: 8 Registriert: 26.08.2015
|
erstellt am: 28. Aug. 2015 13:52 <-- editieren / zitieren --> Unities abgeben:
Hallo, wo ich stehe? Natürlich ganz am Anfang! Polylinien sind nicht immer geschlossen, kann aber vorkommen. Die Linien müssen immer 1.00m versetzt werden Mir schwebt folgende Lösung vor. Alle Polylinien wählen die versetzt werden sollen. Dann müsste für jede Polyline dieser Ablauf passieren. 1. Startkoordinaten (A) der Polylinie auslesen 2. Erste Segmentkoordinate(E) der Polyline auslesen 3.Linie zeichnen auf neuem Layer "temp" von A zu E mit einer Länge 1/2 AE 4.Linie drehen mit Basis A und Winkel 1 Grad 5.Endpunkt der gedrehten Linie auslesen. Da die Linie gedreht wurde, sollte sich dieser Endpunkt immer Rechts von der Polylinie befinden?? 6.Ausgangspolygon versetzen mit Abstand 1.00m und bei Seite wählen sollte dann der Endpunkt der gedrehten Linie gesetzt werden. 7.Linie auf Layer temp löschen Ist einer von den Schritten in AutoCAD nicht möglich? Und da ich nicht besoders gut bin in LISP, bin ich für jede Hilfe dankbar.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 28. Aug. 2015 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Ui, dann lassen wir mal Koordinatensysteme weg und gehen auf deine Vorstellung ein: Das Linienobjekt wird nicht benötigt, mit der Lispfunktion POLAR kommt man auch zu dem Punkt und erspart sich erstellen und löschen des unnötigen Objektes. (alerdings wirst du schnell sehen das in Acad die Winkel nicht in Dezimalgrad hinterlegt und verarbeitet werden) Immer um 1Grad drehen, dann ist es immer LINKS in Polylinienrichtung, aber nicht unbdingt, denn es kommt ja darauf an wo sich die anderen Punkte befinden, dein so ermittelter Punkt kann also je nach Polylinienverlauf mal auf der einen, mal auf der anderen Seite liegen. Du hast eine feste Vorstellung davon wie deine Polylinien aussehen, programmieren würde man aber so dass möglichst alle Eventualitäten berücksichtigt werden. Darunter würden dann sogar Bögensegmente fallen, die PLs nunmal haben können.
Ich denke ich erkenne zu viele Fallen, so kann ich dir ohne fertigen Code kaum helfen. Fange doch ruhig an wie du es dir denkst, beschränke dich dabei zunächst auf LWPolylines, zum testen nimmst du erst einmal eine und list den ersten und zweiten Scheitelpunkt aus. Dazu findest du auch schon fertigen Code für alle Scheitelpunkte, mit NTH 0 und 1 kommst du dann an die Werte. Auf gehts.. (auf deine Frage hin: Man kann alles mit Lisp umsetzen) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 28. Aug. 2015 19:07 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Zitat: Original erstellt von m.hacker: 3.Linie zeichnen auf neuem Layer "temp" von A zu E mit einer Länge 1/2 AE 4.Linie drehen mit Basis A und Winkel 1 Grad 5.Endpunkt der gedrehten Linie auslesen.
Das ist Kinderkram. Wer CAD programmiert, sollte solche Punkte auch errechnen können. Und damit das besonders einfach ist, hat Autodesk extra Funktionen dafür bereit gestellt. Kennst Du den GeomCal Rechner in AutoCAD? Onlinehilfe nach CAL bzw KAL durchsuchen hilft Dir weiter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 28. Aug. 2015 22:03 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Am Anfang stand bei jedem ein ^C^C_.-PURGE;_all;*;_n;_.ZOOM;_e;_.QSAVE oder (sssetfirst nil (ssget '((0 . "INSERT")))) sofern man vom CAD zum programmieren kam. Und da auch der Geometrie-Rechner kein "Links von Polylinie" kennt, heißt es erst mal pauken, lesen, lernen. Dank des Internets heute zum Glück viel einfacher wie früher, alle anderen Hilfen wie Menschen und Fachliteratur steht einem ja nach wie vor zusätzlich zur Verfügung. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 28. Aug. 2015 22:59 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Zitat: Original erstellt von cadffm: Und da auch der Geometrie-Rechner kein "Links von Polylinie" kennt,
Oh doch, das kennt der GeomCal. Und heißt dort wie in der Mathematik auch "Normalvektor". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 29. Aug. 2015 00:29 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Oh nein, aus gleichem Grund den du angeführt hast, es heißt anders .Aber jetzt hast einen Begriff genannt mit dem der TE, zusammen mit zuvor genannten KAL, weiterkommen kann - meiner Meinung nach. Vielleicht schätze ich den TE an dieser Stelle auch falsch und du besser ein, da bin ich raus.------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 29. Aug. 2015 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Zitat: Original erstellt von cadffm: Oh nein, aus gleichem Grund den du angeführt hast, es heißt anders
Nein, ein Normalvektor heißt auch bei GeomCal Normalvektor. Es wäre je merkwürdig, wenn das anders wäre. In der Online-Hilfe zu CAL heißt das Thema folgerichtig auch "Calculate a Normal Vector". Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 29. Aug. 2015 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Also ihr streitet euch hier über Sachen ohne zu wissen wo der TE steht. Und bei der Fragestellung des TE gehe ich ganz stark davon aus das Ihm eure Begriffe erstmals nicht weiterhelfen und würde in diesem Stadium der vorliegenden Infos hier erstmals von "polar" sprechen denn für so etwas gibt es den Befehl. @m.hacker also nach deinen Beschreibungen solltest du wohl so in der Art gestartet sein (setq AuswahlSS (ssget '((0 . "LWPOLYLINE")))) und wie sieht es dann bei dir weiter aus? Damit wir sehen wo es klemmt. ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 29. Aug. 2015 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Zitat: Original erstellt von Meldin: Also ihr streitet euch hier über Sachen ohne zu wissen wo der TE steht. Und bei der Fragestellung des TE gehe ich ganz stark davon aus das Ihm eure Begriffe erstmals nicht weiterhelfen und würde in diesem Stadium der vorliegenden Infos hier erstmals von "polar" sprechen denn für so etwas gibt es den Befehl.@m.hacker also nach deinen Beschreibungen solltest du wohl so in der Art gestartet sein (setq AuswahlSS (ssget '((0 . "LWPOLYLINE")))) und wie sieht es dann bei dir weiter aus? Damit wir sehen wo es klemmt.
Hier lesen und diskutieren ja auch andere Leute miteinander als nur der Threadersteller. Wenn aus dem Forum allerdings eine Expertenfragerunde werden soll, an die sich jeder wenden kann, dann wäre das was anderes. Ich wäre dann raus, weil ich solche Dienste nur gegen Lohn anbiete. Ich vermute sehr stark, dass jeder mit mindestens Realschulabschluss schon mal was von Normalvektoren gehört hat. Ich gehe deshalb davon aus, dass es sehr viel mehr Leute gibt, die mittels herkömmlicher Mathematik das Problem lösen können, als es Menschen gibt, die CAD-Systeme bedienen können. Wo der Thread-Ersteller persönlich steht und über welche Kenntnisse er verfügt, kann nur er selbst uns sagen. Dazu ist ja dieses Forum da, dass er dann nochmals rückfragen kann, wenn er mit einer Antwort nichts anzufangen weiß. Ich selbst neige dazu, Fragestellern keine direkt funktionierende Lösung mitzuteilen, sondern will des Lerneffekts wegen die Leute selbst auf den richtigen Pfad führen. Dazu gebe ich dann die nötigen Stichpunkte, über die ein Fragesteller dann nachdenken muss. Wenn er nicht weiter kommt, kann er ja nochmals nachfragen. Nur so werden aus Fragestellern zukünftige Ratgeber.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m.hacker Mitglied
Beiträge: 8 Registriert: 26.08.2015
|
erstellt am: 29. Aug. 2015 09:50 <-- editieren / zitieren --> Unities abgeben:
Zitat: Immer um 1Grad drehen, dann ist es immer LINKS in Polylinienrichtung, aber nicht unbdingt, denn es kommt ja darauf an wo sich die anderen Punkte befinden, dein so ermittelter Punkt kann also je nach Polylinienverlauf mal auf der einen, mal auf der anderen Seite liegen.
Verstehe ich nicht. Mir ist egal wo sich der rest von der Polylinie befindet. Start und erstes Segment somit ist die Richtung vorgegeben. Bei einer Drehung, mit immer dem selben Winkel, habe ich den neuen Punkt immer abhängig vom Verlauf der ersten beiden Segmente der Polylinie auf der selben Seite. Da kann das Polygon sonst wie aussehen, ne Schnecke sein oder Bögen haben. Solange ich nur das erste Segment betrachte. Versetzt wird dann das ganze Polygon. Aber das drehen jetzt mal weglassen. Wenn das so wie archtools beschreibt, mit Vektoren geht, dann habe ich ja einen Richtungsvektor. (Startsegment und erstes Segment) Davon den Normalvektor berechnen. Somit hab ich meine Seite auf die versetzt werden soll. Zitat: Das ist Kinderkram. Wer CAD programmiert, sollte solche Punkte auch errechnen können
Das war eine sehr netter Anfang. Und nein das mache ich normalerweise nicht. Trotzdem kann ich solche Punkte mit Mathe berechnen. Ich wusste als "doofer Anwender" nicht, das AutoCAD das kann. Alle Foren der Welt habe ich noch nicht durch. Nicht vom Namen täuschen lassen der ist echt. Trotzdem Danke für die Hinweise. Natürlich werde ich Programmieren, wenn ich sehe das es auch einen Sinn hat und ich das Problem lösen kann. Bis jetzt habe ich eine Liste von Polygonen. Das ist noch nicht sehr spannend. Weil ich erst nach einem Lösungsansatz gesucht habe. Sobald ich "etwas" vorweisen kann kommt das hier rein. [Diese Nachricht wurde von m.hacker am 29. Aug. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 29. Aug. 2015 10:03 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Zitat: Original erstellt von m.hacker:
Natürlich werde ich Programmieren, wenn ich sehe das es auch einen Sinn hat und ich das Problem lösen kann.
Dein Problem wirst du mit einer Programmierung bestimmt lösen können also kannst du getrost damit Anfangen. ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 29. Aug. 2015 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Zitat: Original erstellt von m.hacker: [i] Bis jetzt habe ich eine Liste von Polygonen. Das ist noch nicht sehr spannend. Weil ich erst nach einem Lösungsansatz gesucht habe. Sobald ich "etwas" vorweisen kann kommt das hier rein. i]
Noch ein Hinweis: der Normalvektor alleine reicht nicht aus, weil die Polylinie ja im nächsten Segment wieder zurück springen kann. Dann ist es fraglich, ob der mittels Normalvektor links oder rechts neben dem ersten Segment stehende Konstruktionspunkt innerhalb oder außerhalb der PLinie steht. Du musst da also noch prüfen, ob die Linie vom Anfangspunkt der Plinie zum Konstruktionspunkt die Plinie schneidet. Dieses Problem musst Du bei der konstruktiven Lösung´, bei der Du eine Hilfslinie erzeugst, ja auch klären.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 29. Aug. 2015 12:31 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Hallo m.hacker, viellecht reicht ja auch schon die vorgefertigte Offset Methode (ActiveX) für deine Zwecke. ich hab das mal in eine einfache Lisp Routine (ohne Error Handling) gepackt zum Test.
Code: (vl-load-com) (defun C:UHPLOFFSET ( / dist cnt obj sset) (Prompt "Gleichzeitiges Versetzen nach rechts von mehreren Polylinien - Udo Hübner 8/2015") (initget 6) ; Abfrage Versatzabstand > 0 (if (setq dist (getdist (strcat "\nVersatzabstand eingeben: <" (rtos (getvar "OFFSETDIST")) ">"))) (setvar "OFFSETDIST" dist) ) (Prompt "\nPolylinien wählen:") (setq sset (ssget (list (cons 0 "LWPOLYLINE")))) (if (> (setq cnt (sslength sset)) 0) ; wenn mehr als 0 Polylinien gewählt wurden (progn (while (>= (setq cnt (1- cnt)) 0) (setq obj (vlax-ename->vla-object (ssname sset cnt))) (vla-offset obj (getvar "OFFSETDIST")) ; versetzen ) ) ) )
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m.hacker Mitglied
Beiträge: 8 Registriert: 26.08.2015
|
erstellt am: 31. Aug. 2015 08:59 <-- editieren / zitieren --> Unities abgeben:
Hallo CAD-Huebner, das LISP macht genau das, was ich mir vorgestellt habe. Ich muss es jetzt noch genauer testen, aber erste versuche waren erfolgreich. Ich bin echt begeistert. DANKE! Ich würde es jetzt nur noch gerne verstehen. Die Linien werden in sset als "main entities only" gespeichert Beispiel <Selection set: 924> oder <Selection set: 8ab> Versetzt wird ja "obj" und mit (setq obj (vlax-ename->vla-object (ssname sset cnt))) wird pro Linie ein vla object erzeugt das versetzt werden kann? Die Abarbeitung der Schleife ist mir noch nicht ganz klar. Genauer wie die einzelen Elemente erkannt und abgearbeitet werden. Den "cnt" Counter verstehe ich. sslength sset gibt die Anzahl der Elemente wieder. [Diese Nachricht wurde von m.hacker am 31. Aug. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m.hacker Mitglied
Beiträge: 8 Registriert: 26.08.2015
|
erstellt am: 31. Aug. 2015 17:12 <-- editieren / zitieren --> Unities abgeben:
Code:
(command "_-layer" "_make" "LINIE1_BGL" "_color" "T" "255,0,0" "" "L" "CONTINUOUS" "" "") (setvar "OFFSETDIST" 1) (setq sset (ssget "_X" (list (cons 0 "LWPOLYLINE")(cons 62 1)))) ;(cons 62 1) filtert zusätzlich nach Farbe rot (if (> (setq cnt (sslength sset)) 0) ; wenn mehr als 0 Polylinien gewählt wurden (progn (while (>= (setq cnt (1- cnt)) 0) (setq obj (vlax-ename->vla-object (ssname sset cnt))) (vla-offset obj (getvar "OFFSETDIST")) ; versetzen (vla-put-layer (vlax-ename->vla-object (entlast)) "LINIE1_BGL") ;legt das neu erzeugte Element auf den oben erstellten Layer ) ) )
Ich wollte nur sagen das es funktioniert. (setq obj (vlax-ename->vla-object (ssname sset cnt))) hab ich jetzt auch verstanden. Läuft und bis jetzt habe ich keinen Fehler gefunden beim ausführen. Und das oben ist das umgebaute LISP von CAD-Huebner so wie ich es verwende.
[Diese Nachricht wurde von m.hacker am 31. Aug. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 31. Aug. 2015 19:13 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Hier noch ein paar Hinweise zur Optimierung: vla-offset gibt ein Array aller erzeugten Versatzkonturen zurück, das ist besser als (entlast). Das können bei bestimmten Formen durchaus keine, aber auch mehrere Polylinien sein. Den Aufruf von LAYER würde ich für neue AutoCAD Funktionen besser mit commadn-s einleiten und die Optionen dann durchgängig mit _ internationalisieren. Ansonsten kann man einen Layer statt mit commadn-s auch mit (vla-add layers ... oder (entmake ... erzeugen. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m.hacker Mitglied
Beiträge: 8 Registriert: 26.08.2015
|
erstellt am: 01. Sep. 2015 10:35 <-- editieren / zitieren --> Unities abgeben:
Code:
(entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 "LINIE_BGL") ; Layername (cons 70 0) ; 0 / 1 an / aus (cons 62 1) ; Farbe (cons 6 "CONTINUOUS") ; Linientyp "continuous" ) )
geht natürlich auch ... persönlich finde ich aber command besser.
Code:
(command-s "_.Layer" "_Make" "LINIE_BGL" "_Color" "1" "" "_LType" "Continuous" "" "")
ist das jetzt alles international? entlast habe ich verwendet weil das laut Autodesk das letzte Objekt in der Zeichnung liefert das nicht gelöscht wurde. Ich dachte das geht so. Nur die versetzten Elemente auf den neuen Layer zu schieben bekomm ich ohne entlast nicht hin. Code:
(vla-put-layer (vla-offset obj (getvar "OFFSETDIST")) "LINIE_BGL")
geht nicht, wär auch zu einfach gewesen :/ und eine kopie von (vla-offset obj) so wie ähnlich wie bei https://forums.autodesk.com/t5/forums/forumtopicprintpage/board-id/130/message-id/319083/print-single-message/false/page/1
liefert beides ; Fehler: Fehlerhafter Argumenttyp: VLA-OBJECT Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 01. Sep. 2015 20:26 <-- editieren / zitieren --> Unities abgeben: Nur für m.hacker
Die Rückgasbe kann man so auswerten: Code: (foreach offset-Obj (vlax-safearray->list (vlax-variant-value OffsetObjs)) (vla-put-color offset-Obj acByLayer) ; 'acByLayer = 256 = Farbe auf vonlayer zurücksetzen (vla-put-layer offset-Obj "LINIE1_BGL") ;Layer wechseln )
Ich hab das Ganze mal etwas allgemeingültiger zur freien Verwendung gestaltet: ------------------ Mit freundlichem Gruß
Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 01. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m.hacker Mitglied
Beiträge: 8 Registriert: 26.08.2015
|
erstellt am: 02. Sep. 2015 15:54 <-- editieren / zitieren --> Unities abgeben:
|