• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Lisp, um Polylinea in doppelt geschlossener Linie mit gestricheltem Einsatz zu konvertieren

  • Ersteller Ersteller brizzo1982
  • Erstellt am Erstellt am

brizzo1982

Guest
Guten Morgen, alle.
Ich würde eine Funktion benötigen, die es erlaubt, ausgewählte Polylinien mit einer in einer geschlossenen Doppellinie definierten globablen Breite (bestimmt durch die gleiche Breite der Polylinea) umzuwandeln, wobei automatisch ein definiertes Bindestrich eingefügt wird.
Brillante Idee, Kabelkanäle schnell zu ziehen: Statt die Doppellinien zu übergeben, sie zu sammeln, die All-Hand-Rückhalteelemente einzufügen, könnten Sie schnell die Polylinie mit der Breite identisch mit der Größe des Kanals ziehen und dann die Lippe in Objekt werfen, um es in einen ästhetisch ansprechenden Kanal zu verwandeln, wenn im Vergleich zur vollen Polylinie! :biggrin:

..unglücklicherweise sind meine Bekannten der Autolisp begrenzt.Wenn jemand nach vorne kommt, biete ich einen Kaffee an der Forum-Bar bezahlt!

Danke im Voraus. :finger:
 
Code:
(defun c:pl2can)
(setq gru(ssget '(0 . "lwpolyline"))))
Index
modelspace(vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object))))
)
(setvar "hpname" "ansi31")
(setvar "hpscale" 4)
(Repeat)
(setq spessore(vla-get-constantwidth (vlax-ename->vla-object (ssname gru (setq index(1+ index))))))))))
(vla-put-constantwidth (vlax-ename->vla-object (sname gru index) 0.0)
(setq ent1(car(vlax-safearray->list (vlax-variant-value))))
(setq ent2(car(vlax-safearray->list (vlax-variant-value))))
(setq coord1 (variant2list (vla-get-Koordinaten ent1) 2)
(setq coord2 (variant2list (vla-get-Koordinaten ent2))
(vla-addline modelspace (vlax-3d-point (car coord1))
(vl-cmdf "_pedit" (entlast) "_j" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "_cl" "")
(vl-cmdf "_hatch" """" (entlast)
)
)

;; **************************************************************************************************************************************************************************************************************************************************************** ****************************************************************************************************************************************************************************************************************************************************************
;; transformiert eine Variante in einer Listea a gruppi con numero elementi per gruppo
(defun variant2lista (listavariant numero / listaparz listafin)
(setq listaparz)
Listafin '()
)
(foreach elemento (vlax-safearray->list)
(setq listaparz)
(if (= Längenlisteaparz) numero)
(setq listafin (append listafin (list listaparz)))
Listeaparz '()
)
)
)
Listafin
)
 
Confutatis Lösung ist schön, aber haben Sie jemals versucht, Multilines zu verwenden?
Neben dem Zeichnen der Routen als einfache Linien, können Sie die Netze einfügen, die, als assoziativ, bewegen die Vertiken der Multiline automatisch retrace vermeiden müssen, alles zu remake.

Bye
 
@brick

Wenn Sie bestehende Polylinien umwandeln müssen, geht mein Programm gut, wenn nicht die Lösung von rpor66 ist sicherlich rationaler.
 
Multilines sind im Wechsel besser handhabbar, aber die Lispe confutatis (*) erlaubt auch die Bögen des Poly zu behandeln, hängt von der Verwendung ab, die brizzo machen muss.


(*) wie üblich verschärft und resolute :finger:, Sie könnten eine Hilfe für solche starten weiß1kooper :biggrin:
 
schön wäre auch der umgekehrte Betrieb, von doppeltem Poly bis Poly mit Dicke und würde weitere sofortige Änderungen ermöglichen.
 
Dank an alle für das Interesse!
confutatis, die Lispe, die Sie freundlicherweise signalisiert, erzeugt mir eine doppelte Linie, aber statt der inneren Rückhalteeinrichtung bringt mir eine einzelne P..wo falsch?
. Ich wiederhole meine Fremdheit zu autolisp Sprache, diktiert durch die fehlende Zeit, um x Lernen zu widmen. .

Was die doppelten Linien ja, ehrlich gesagt hatte ich nicht daran gedacht, aber ich finde einige Schwierigkeiten: Missmanagement der Osnap, ungeschlossene Linien, Unmöglichkeit, sie mit Bögen zu verbinden... sagen ich gut oder vermisse etwas?


..kentcooper Ich kannte ihn nicht. Ich kenne eine devout Leuchte zur Lösung der Probleme der autolispischen Menschheit!!
 
In der Zwischenzeit sollten Sie die Skala ändern.
Sie müssen die Zeile ändern (setvar "hpscale" 4) und die Anzahl nach Ihren Bedürfnissen ändern.
Sie werden sehen, wie durch Magie die gleiche Lisp, die Mr. Cooper... (mit etwas sehr kleiner Variation) :biggrin:

die innere Polylinea wurde nicht gelöscht, aber es ist eine Sache gewünscht: Sie können es in eine versteckte Schicht setzen und wieder verwenden, wenn Sie die umgekehrte Operation durchführen müssen
 
In der Zwischenzeit sollten Sie die Skala ändern.
Sie müssen die Zeile ändern (setvar "hpscale" 4) und die Anzahl nach Ihren Bedürfnissen ändern.
Sie werden sehen, wie durch Magie die gleiche Lisp, die Mr. Cooper... (mit etwas sehr kleiner Variation) :biggrin:

die innere Polylinea wurde nicht gelöscht, aber es ist eine Sache gewünscht: Sie können es in eine versteckte Schicht setzen und wieder verwenden, wenn Sie die umgekehrte Operation durchführen müssen
...: Warum kann ich nicht?!?
..Ich veränderte Skala von einem 0,1 bis 10...alle Zeiten, in denen die Funktion mich zurückgibt

Befehl: pl2can
Objekte auswählen: gefunden(s) 1
Objekte auswählen:
_pedit wählen Polylinea oder [Polilinee]:
das ausgewählte Objekt ist kein Polylinea
Sie wollen es in Polylinea verwandeln? <s> - Ja.
Ja oder nein, bitte.
Sie wollen es in Polylinea verwandeln? <s> Polylinea auswählen oder </s></s>[Polilinee]:
Geben Sie eine Option ein [Apri/Unisci/Larghezza/Edita
vertici/ADatta/Spline/Rettifica/Tipolinea gen./Inverti/ANnulla]:
Befehl: _cl Befehl unbekannt "cl". drücken f1 für die Führung.
Kommando: pl2can Befehl unbekannt "pl2can". drücken f1 für die Führung.
Befehl: _
einen Modellnamen eingeben oder [?/Solido/Definito utente] <ansi31>:
eine Skala für das Modell <0.0100> angeben:
einen Winkel für das Modell angeben <0>: Wählen Sie Objekte aus, um die
Rückhaltekontur oder <tratteggio diretto="">,
Objekte auswählen: gefunden(s) 1
Objekte auswählen:
unmöglich, die Kontur zu behandeln.
Befehl: ?
Befehl:
Befehl: *nullato*


:confused:</tratteggio></ansi31>
 
..nothing to do.:frown:

Befehl: pl2can
Objekte auswählen: gefunden(s) 1
Objekte auswählen:
_pedit wählen Polylinea oder [Polilinee]:
Geben Sie eine Option ein [CHiudi/Unisci/Larghezza/Edita
vertici/ADatta/Spline/Rettifica/Tipolinea gen./Inverti/ANnulla]...
Objekte auswählen: gefunden(s) 1
Objekte auswählen: gefunden(s) 1, 2 insgesamt
Objekte auswählen:
0 Segmente zu Polylinea hinzugefügt
Geben Sie eine Option ein [CHiudi/Unisci/Larghezza/Edita
vertici/ADatta/Spline/Rettifica/Tipolinea gen./Inverti/ANnulla]_cl.
Geben Sie eine Option ein [Apri/Unisci/Larghezza/Edita
vertici/ADatta/Spline/Rettifica/Tipolinea gen./Inverti/ANnulla]:
Befehl: _
einen Modellnamen eingeben oder [?/Solido/Definito utente] <ansi31>:
eine Skala für das Modell <0.1000> angeben:
einen Winkel für das Modell angeben <0>: Wählen Sie Objekte aus, um die
Rückhaltekontur oder <tratteggio diretto="">,
Objekte auswählen: gefunden(s) 1
Objekte auswählen:
unmöglich, die Kontur zu behandeln.
Befehl: ?</tratteggio></ansi31>
 
Ich weiß nicht, was ich sagen soll, es funktioniert mir, aber ich weiß nicht, ob andere Forennutzer es auch versucht haben. Die Frage der Skala könnte stehen, Peditaccept musste auf 1 gehen, aber ich sehe, dass es keine Segmente zu der neuen Polylinie hinzufügt.
an diesem Punkt versuchen, ein Stück Design zu senden, das wir sehen. .
 
Ich weiß nicht, was ich sagen soll, es funktioniert mir, aber ich weiß nicht, ob andere Forennutzer es auch versucht haben. Die Frage der Skala könnte stehen, Peditaccept musste auf 1 gehen, aber ich sehe, dass es keine Segmente zu der neuen Polylinie hinzufügt.
an diesem Punkt versuchen, ein Stück Design zu senden, das wir sehen. .
Bitte sehr.
links <prima>, nach rechts die <dopo> pl2can.

Danke.</dopo></prima>
 

Anhänge

Sie betrachten nie alle möglichen Fälle. offene oder geschlossene Polylinien..
Code:
(defun c:pl2can)
(setvar "peditaccept" 1)
(Setvar "cmdecho" 1)
(setq gru(ssget '(0 . "lwpolyline"))))
Index
modelspace(vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object))))
)
(setvar "hpname" "ansi31")
(setvar "hpscale" 1)
(Repeat)
(setq spessore(vla-get-constantwidth (vlax-ename->vla-object (ssname gru (setq index(1+ index))))))))))
(vla-put-constantwidth (vlax-ename->vla-object (sname gru index) 0.0)
(setq ent1(car(vlax-safearray->list (vlax-variant-value))))
(setq ent2(car(vlax-safearray->list (vlax-variant-value))))
(setq coord1 (variant2list (vla-get-Koordinaten ent1) 2)
(setq coord2 (variant2list (vla-get-Koordinaten ent2))
(cond)
(eq (vla-get-closed ent1)
(vl-cmdf "_hatch" """" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "")
)
(eq (vla-get-closed ent1):vlax-false)
(vla-addline modelspace (vlax-3d-point (car coord1))
(vl-cmdf "_pedit" (entlast) "_j" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "_cl" "")
(vl-cmdf "_hatch" """" (entlast)
)
)
)
)

;; **************************************************************************************************************************************************************************************************************************************************************** ****************************************************************************************************************************************************************************************************************************************************************
;; transformiert eine Variante in einer Listea a gruppi con numero elementi per gruppo
(defun variant2lista (listavariant numero / listaparz listafin)
(setq listaparz)
Listafin '()
)
(foreach elemento (vlax-safearray->list)
(setq listaparz)
(if (= Längenlisteaparz) numero)
(setq listafin (append listafin (list listaparz)))
Listeaparz '()
)
)
)
Listafin
)
 
Sie betrachten nie alle möglichen Fälle. offene oder geschlossene Polylinien..
Code:
(defun c:pl2can)
(setvar "peditaccept" 1)
(Setvar "cmdecho" 1)
(setq gru(ssget '(0 . "lwpolyline"))))
Index
modelspace(vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object))))
)
(setvar "hpname" "ansi31")
(setvar "hpscale" 1)
(Repeat)
(setq spessore(vla-get-constantwidth (vlax-ename->vla-object (ssname gru (setq index(1+ index))))))))))
(vla-put-constantwidth (vlax-ename->vla-object (sname gru index) 0.0)
(setq ent1(car(vlax-safearray->list (vlax-variant-value))))
(setq ent2(car(vlax-safearray->list (vlax-variant-value))))
(setq coord1 (variant2list (vla-get-Koordinaten ent1) 2)
(setq coord2 (variant2list (vla-get-Koordinaten ent2))
(cond)
(eq (vla-get-closed ent1)
(vl-cmdf "_hatch" """" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "")
)
(eq (vla-get-closed ent1):vlax-false)
(vla-addline modelspace (vlax-3d-point (car coord1))
(vl-cmdf "_pedit" (entlast) "_j" (vlax-vla-object->ename ent1)(vlax-vla-object->ename ent2) "_cl" "")
(vl-cmdf "_hatch" """" (entlast)
)
)
)
)

;; **************************************************************************************************************************************************************************************************************************************************************** ****************************************************************************************************************************************************************************************************************************************************************
;; transformiert eine Variante in einer Listea a gruppi con numero elementi per gruppo
(defun variant2lista (listavariant numero / listaparz listafin)
(setq listaparz)
Listafin '()
)
(foreach elemento (vlax-safearray->list)
(setq listaparz)
(if (= Längenlisteaparz) numero)
(setq listafin (append listafin (list listaparz)))
Listeaparz '()
)
)
)
Listafin
)
Ja, es funktioniert jetzt! :finger:
Perfekt! die einzige Sache wäre, die Einschränkung mit der geschlossenen Polylinea verbunden zu haben, so dass alle Änderungen auch die Luke beeinflussen.. und die direkte Verschiebung der Median-Polyline auf einer dedizierten Schicht namens 01_polilinee_nascoste . . .
Aber ich will deine Güte und Geduld nicht missbrauchen, also ist das okay!
Danke! :biggrin:

Kaffee bezahlt an der Bar wie versprochen! :smile:
 
Eigentlich wäre es eine Möglichkeit, es mit activex Methoden verbunden zu machen, aber es ist sehr schlank. Ich werde diese Funktion eines Tages schreiben. .
 
hinter Vorschlägen von gp (Danke), anstatt:
(vl-cmdf "_hatch""" (entlast) "

ersetzt durch:
(vl-cmdf "_-hatch" "_s" (entlast) "_a" "_a" "_y" "")

Auf diese Weise kommen weitere Optionen einschließlich der Vereinigung.
das Ganze wird geboren, dass die Mehrsprachigkeit mit (vl-cmdf "_hatch" ...), anstatt (vl-cmdf "-trate"...). Lauf einfach!
(vl-cmdf "_-hatch". .
 
Ich bin auch nicht sehr praktisch von lisp, und so passiert es, dass ich die Tipps / Vorschläge dieses Forums nutzen.
einer von Ihnen kann mich bestätigen, wenn die zuvor erwähnte Lise Polylinea mit Polylinea Dicke in doppelter Linie geschlossen mit Einlage halten ist gültig nur für Polyline mit konstanter Dicke? wie ich versuche, aber es funktioniert nur, wenn die Polylinea konstante Dicke hat... wo ist es falsch?
Vielen Dank
Marco fabbri
 
Ich bin auch nicht sehr praktisch von lisp, und so passiert es, dass ich die Tipps / Vorschläge dieses Forums nutzen.
einer von Ihnen kann mich bestätigen, wenn die zuvor erwähnte Lise Polylinea mit Polylinea Dicke in doppelter Linie geschlossen mit Einlage halten ist gültig nur für Polyline mit konstanter Dicke? wie ich versuche, aber es funktioniert nur, wenn die Polylinea konstante Dicke hat... wo ist es falsch?
Vielen Dank
Marco fabbri
selbst für mich funktioniert es nur, wenn die Breite der Polylinie konstant ist.

Hi.
 
Danke.
Also kann mir jemand sagen, ob es eine Lippe gibt, um eine Polylinea mit nicht konsistenter Dicke in eine geschlossene Polylinea zu verwandeln? dann, wenn es selbst ein retino automatisch generiert würde das Maximum..
Vielen Dank
Marco fabbri
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben