| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Polylinie versetzen (2204 mal gelesen)
|
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 03. Apr. 2003 15:33 <-- editieren / zitieren --> Unities abgeben:
Hi Forum Eine komplizerte und heikle Frage... Ich möchte den 'VERSETZ' Befehl für LWPOLYLINIEN in LISP nachbilden und für meine Bedürfnisse optimieren.Die PLINE besteht aus Linien und Bögen.(keine Splines o.ä.) Das ganze benötige ich für die CNC-Bearbeitung von Konturtaschen, die ich Konturparallel ausräumen möchte. Dazu soll eine geschlosene Kontur um einen bestimmten Wert nach innen versetzt werden. Die versetzte Kontur wird nun wieder um den gleichen Wert versetzt usw... -> siehe Ausraeumen.jpg Ursprünglich wollte ich dies mit dem normalen VERSETZ-Befehl machen. VERSETZ macht aber teilweise viel Müll !!! Habe in einer DWG einige Kuriositäten gesammelt und als ZIP angehängt... Unter ACAD R14 war VERSETZ dafür komplett unbrauchbar, ACAD2002 ist zwar schon besser aber auch nicht i.O. Bei einfachen PLINE's komme ich einigermaßen klar. Schwierig wird's bei PLINE's, die Hinterschneidungen haben. Dabei müssen einige Vertices wegfallen und/oder mehrere eigenständige PLINE's erzeugt werden.(macht A2002 sogar teilweise selbst, je nach Kontur) Ist etwas schwierig in Worte zu fassen... ->siehe Ausraeumen.jpg ... dann wird's klarer. Bei meinem ersten Ansatz berechnete ich jeden Vertex einzeln und bildete daraus die versetzte PLINE. Danach wollte ich die neue PLINE auf Hinterschneidungen prüfen und entsprechend bereinigen. Versetzen klappte gut, aber das Prüfen -> No way... Lange Rede, kurzer Sinn: Hat sich schon jemand mit diesem Problem beschäftigt und kann mir Tips geben ? Wer kann mir zumindest einen brauchbaren Ansatz geben ? Ich suche eigentlich keinen konkreten Code, sondern 'nur' einen Lösungsweg/ansatz. Habe auch schon 'gegoogelt' leider ohne Erfolg. Bin für jeden (auch noch so kleinen) Tip dankbar... Grüße Andi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 03. Apr. 2003 21:05 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
|
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 03. Apr. 2003 23:32 <-- editieren / zitieren --> Unities abgeben:
Hi Theodor Erst mal Danke für Deine Antwort ! Das Tool habe ich mir angesehen. Leider verwendest Du zum Versetzen den original _OFFSET Befehl. Genau darum geht es bei meinem Problem, daß ich diesen nicht verwenden kann. OFFSET liefert oft keine brauchbaren Ergebnisse -> siehe VERSETZ_FEHLER.JPG Würde nur bei einfachen 0815 Konturen funzen, die könnte ich aber auch zur Not von Hand zeichnen. Bin gerade dabei einige Problemkonturen zu 'designen' und diese von Hand zu versetzen. Dazu löse ich die PLINE auf und versetze alle Elemente einzeln. Danach konventionell stutzen,dehnnen, verrunden... Dabei versuche ich eine gewisse Logik zu entwickeln, damit ich diese Vorgehensweise (vielleicht) automatisieren und in ein Programm umwandeln kann. - learning by doing... Falls jemand einen Tip oder Hinweis hat BITTE posten. Grüße Andi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mario Scht Mitglied
Beiträge: 156 Registriert: 14.11.2002 Win XP ACAD 2007
|
erstellt am: 04. Apr. 2003 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
Hi Andi, nur so ein Gedanke, aber was anderes willst Du ja auch nicht. (Ich könnte Dir leider auch nichts anderes geben :-) 1. Polygon zeichnen 2. Schleife machen mit Anzahl der Elemente im Polygon = Anzahl der Punkte, falls geschlossen, 3. Koordinaten der Elemente speichern 4. checken ob Schnittpunkte bei relativem Koordinatenvergleich vorhanden sind. Ich glaube, das könnte eine zweidimensionale Schleife machen, da ja jedes Element miteinander verglichen werden müßte. 5. wenn nein: weiterzeichnen 6. wenn ja: neuen Polygon zeichnen mit Schnittpunkt als neuem Punkt 7. gehe zurück bis auf LOS (1.) und ziehe keine 4000€ ein :-). Das gleiche machst Du ja auch, wenn Du von Hand arbeitest. Du löst den letzten brauchbaren Polygon auf, machst Deine Veränderungen, fügst Ihn wieder zusammen und machst weiter, bis es wieder nicht hinhaut. Ob das mit der Schnittpunktabfrage auch mit Bögen funktioniert weiß ich nicht. Kniffelig wirds bei Inseln und bei Ecken, die zu Kreisbögen werden sollen (Kreistangente im Schnittpunkt jeweils als Anfang und Ende der neuen Kreisbögen) Falls es der größte Scheiß ist, den ich gerade aufgeschrieben habe, dann weißt Du wenigstens, wie's auf keinem Fall geht. Grüße Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 04. Apr. 2003 21:45 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 04. Apr. 2003 22:32 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
Hallo Andi, inzwischen habe ich mit deiner angehängten Datei Versuche unternommen. Mit meinem Versetz-Befehl sind keine Fehler aufgetaucht, obwohl er _OFFSET benutzt. Da ich vermutete, dass irgend einé Einstellung bei dir die Fehler verursacht, habe ich eine Dateivorlage von mir verwendet. Das Ergebnis habe ich angehängt. Von was werden die Fehler verursacht? Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 05. Apr. 2003 00:33 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
Hi Andi, ich habe auch schon heute nachmittag mal rumexperimentiert mit deiner Zeichnung: nicht nachvollziehbar. Deine Versetz-Ergebnisse gehen ja stark in den Bereich der Ornamentik - ein hochinteressantes Thema übrigens, mit dem ich mich, wenn ich Zeit habe, immer wieder mal gern beschäftige. Die Iren, Chinesen, Araber und Mathematiker haben da Grossartiges geleistet;-) Aber nach einem Dutzend Jahren Arbeit mit dem Versetz-Befehl kann ich mich *nicht* daran erinnern, dass da jemals solche Katastrophen entstanden wären. Keine Ahnung, wie das bei dir passiert sein kann. Ich habe den Offset-Befehl eher als sehr zuverlässig in Erinnerung, und wo Probleme auftraten, lag's dann doch (nachvollziehbar) an der gegebenen Geometrie. Die Überlegung, einen Offset-Befehl zu machen, bei dem aus einem Quadrat ein abgerundetes Quadrat wird, bleibt davon natürlich unberührt - so eine 'Fingerfräserbahn' hätte schon was... Die notwendigen 'Zutaten' sind da wohl das Innenleben eines Bogens der Normalvektor der Linie sowie die Berechnung von Schnittpunkten (4 Kombinationen aus Linie x Bogen) - oder übersehe ich was? Für die Schnittpunkte gibt's gute vlax-Funktionalität! Gruss, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 05. Apr. 2003 00:36 <-- editieren / zitieren --> Unities abgeben:
Hi Theodor Deine Konturen sind perfekt ! Wenn ich in Deiner Zeichung die Konturen Versetze, tauchen aber wieder sie gleichen Fehler auf ! ACAD rechnet bei der obersten Kontur ca. 10 Sekunden für den Offset. Auch wenn ich Offset über vla-offset auf rufe kommt der gleiche Müll raus. Liegt also wahrscheinlich am System. Ich arbeite unter ACAD2002 ohne Servicepacks. Welche Version bzw. Servicepacks hast Du installiert ? Ganz ähnliche Konturen haben übrigens auch schon einer CNC-Steuerung Probleme gemacht. Dabei wurde plötzlich ab dem 1.Bogen die Bahnkorrektur auf die andere Seite gelegt. Vermutlich lag es daran, daß bei einer Bestimmten Bahnkorrektur ein Bogen von 360 Grad entsteht -> siehe: Bogen_360_grad.jpg Werde jetzt mal nach Einstellungen suchen und Servicepacks installieren. Wäre schon optimal, wenn ich _OFFSET verwenden könnte. Die Berechnung mit LISP ist nämlich ein ziemlich harter Brocken !!! Na, ja. Erstmal vielen Dank für Deine Bemühungen. Grüße Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 05. Apr. 2003 01:24 <-- editieren / zitieren --> Unities abgeben:
Hi mapcar Es gab einmal eine Art Spielzeug, Names 'Spiroghraf'. Das waren verschiedene Zahnräder mit Bohrungen. Man konnte die Zahnräder oder Zahnstangen auf ein Blatt Papier mit Stecknadeln stecken. Dann nahm man ein zweites Zahnrad, steckte einen Stift durch eine Bohrung und 'radelte' um das Befestigte Zahnrad herum. Dadurch entstanden faszinierende Muster auf dem Papier, sog. Rollkurven. Je nach Zahnradpaarung und Stiftabstand vom Zentrum konnte man 'Tausende' versch. Muster erzeugen. - Geile Sache Meine ACAD Konturen erinnern mich stark daran... Werde jetzt erstmal mein System auf Vordermann bringen, damit Versetz richtig Funktioniert. Hoffentlich kann ich dann den Befehl auch wirklich einsetzen ! Die Berechnung ist ziemlich der Hammer ! Das ganze muß wohl auf einigen Fallunterscheidungen und rekursiven Strukturen basieren. So ganz bin ich mir aber noch nicht sicher. 4 Kombinationen reichen nicht ganz, da Übergänge mit Bögen tangential oder nicht tangential sein können.Außerdem bin ich noch am Grübeln, ob die Bogenrichtung spezielle Fälle hervorruft...etc. Auf jeden Fall reicht es nicht, nur die Vertices zu Versetzen. Man muß die Elemente einzeln versetzten und dann Schnittpunkte errechnen. Jedes neu errechnete Element muß dann mit der bisher berechnteten Kurve auf Kollision geprüft werden usw. Mit der Zeit lerne ich die Arbeit der Adesk-Programmierer zu schätzen. Vielen Dank Andi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 05. Apr. 2003 12:04 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
Hallo Andi, ich benutze ACAD2000. Auch bei deiner Originaldatei sind beim versetzen keine Fehler aufgetaucht. Da auch Axel kein Fehler gefunden hat, vermute ich, wie du auch, dass bei deinem System der Fehler zu suchen ist. Bei deinem ersten Beitrag hattest du noch den Wunsch die Konturen auf Konturverletzung zu prüfen. Dazu werde ich in den nächsten Tagen ein Tool zu Verfügung stellen. So viel vorab: es benutzt den Punkt-, und Messen-Befehl um z.B. eine Fräserbahn darzustellen. Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 05. Apr. 2003 17:53 <-- editieren / zitieren --> Unities abgeben:
Hi Nur zur INFO: Hab nochmal im Internet nachgeforscht. So wie's aussieht ist die Sache ein Acad2002-Feature Folgendes habe ich bei CADALYST.com gefunden: The Offset command now only does half a job in many cases where it worked perfectly in earlier AutoCAD releases. Try the following ; script: _.PLINE 2,2 0,2 0,0 2,0 2,1 1,1 _.OFFSET 0.5 2,2 3,2 The new polyline should end at the point 1,1.5. In Release 14, it does. In AutoCAD 2002, the polyline stops short at point 2,1.5. It seems the offset algorithm is trying to prevent the new object from interfering with itself or getting too close to the original object, but is just a little too enthusiastic in doing so. No known workaround. Das Beispiel ist zwar nicht zu krass wie meine Ornamente, aber auch andere haben Probleme mit _OFFSET festgestellt... @mapcar Wenn Du abgerundete Außenecken haben willst, dann muß OFFSETGAPTYPE auf 1 gestellt werden.(0 = schrafkantig, 1 = abrunden, 2 = fasen) Mit welcher ACAD-Version arbeitest Du ? Grüße Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 05. Apr. 2003 22:21 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
*Lach - das mit dem OFFSETGAPTYPE wusste ich nicht! Seit wann ist das drin? Mein Test mit deiner Kontur lief unter 2002 - ich arbeite derzeit aber meistens mit 2000i. Jedenfalls waren deine Probleme für mich nicht unter 2002 nachvollziehbar. Das Script produziert aber auch bei meinem 2002 dieses Ergebnis. Interessanter finde ich die PL 0,4/0,0/3,0/3,2/0.3,2 (offset=0,5). Offensichtlich soll wirklich die neue PL nicht die alte schneiden. Unter 14 entsteht übrigens nur ein Rechteck, die zweite PL (der Stummel) fehlt da. Da finde ich das 2002er Ergebnis eigentlich konsequenter. Mit einem Spirograf hab ich früher immer gerne gespielt, besonders, wenn ich bekifft war;-) Gruss, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... [Diese Nachricht wurde von mapcar am 05. April 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 06. Apr. 2003 00:33 <-- editieren / zitieren --> Unities abgeben:
Hi mapcar OFFSETGAPTYPE hab ich auch erst bei meinen Nachforschungen zufällig entdeckt. Ich freute mich wie ein Butterkeks als ich endlich was gefunden habe zum Verstellen . Aber dann war's doch nix damit. _OFFSET hin oder her, ist mir jetzt wurscht ! Jetzt bau mir meinen eigenes (defun c:andi_offset...), soll doch AutoCAD machen, was es will... Das ganze soll auch zur Not unter R14 funktionieren und da ist's mit OFFSET sowieso Essig. Wo ein Wille ist, ist auch ein Weg... Gut's nächtle Andi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 06. Apr. 2003 00:52 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
Hallo Andi, Hallo Axel, Von der Sytemvariablen "OFFSETGAPTYPE" wusste ich auch nichts. Da ich sie gut brauchen kann, habe ich sie gleich probiert. Ergebnis: Bei ACAD2002 funktioniert sie einwandfrei. Bei ACAD2000 nicht, ist aber in der Hilfe von ACAD2000 beschrieben. Gibt es eine Möglichkeit damit sie auch in ACAD2000 funktioniert? Gruß Theodor
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 06. Apr. 2003 02:39 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
|
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 06. Apr. 2003 10:26 <-- editieren / zitieren --> Unities abgeben:
Hi Theodor Das Tool hilft mir zwar bei meinem Problem nicht viel, kann es aber trotzdem sehr gut gebrauchen ! Die Befehle MESSEN,TEILEN... hab ich bisher nie richtig beachtet. Toll was man damit machen kann, wenn sie clever eingesetzt werden. Danke !! Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 06. Apr. 2003 19:29 <-- editieren / zitieren --> Unities abgeben: Nur für andi2050
Hallo Andi, inzwischen hatte ich ich die Möglichkeit deine Datei mit _OFFSET in ACAD2002 zu testen. Ergebnis: es gibt "Wurstel". Der Fehler ist also bei ACAD2002 und nicht am System. Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |