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

Fügen Sie einen Block von lisp erstellt

abelli12

Guest
Guten Morgen, ich frage Experten, ob es möglich ist, als Block von Wesen, die von lisp erstellt werden, einzufügen.
Ich schrieb eine Lippe, die eine Schraube (mit polarem Befehl) zieht, aber ich möchte wählen, ob sie als einfache Linieneinheit oder als Einzelblock (in der Tat zum Zeitpunkt der Einfügung in das aktuelle Design) einfügen.
grundsätzlich welche Befehle verwenden, wieviel ich bereits im Blockmodus im gleichen Lisp geschrieben habe.
Danke für die Aufmerksamkeit.
 
sehr schnell, wie Sie Ihre Entitäten erstellen, fügen Sie den Namen in eine Liste.
Sie haben eine Liste mit allen Namen der Wesen, die Sie erstellt haben, nach brutal genug
(Befehl "_select" aufgeführt)
(Befehl "_block" "_previous" Zeiger ")
 
Vielen Dank für Ihre schnelle Antwort.
mit der Lispe sind eine Neophyte, ich lerne von selbst angezogen (mit der guten Beratung dieses Forums und wie viel ich im Internet finden kann), Ich werde sehen, wie man Namen zu einer Liste hinzufügen.
Danke.
 
(setq listentita (ssadd)) ->Erstellt eine leere Liste der aufgeführten Namen

Zykluszyklus
(letzte setq (entget (entlast)))) -> die ultimative var mit dem Namen der letzten erstellten Einheit
(ohne letzte Liste)
Endzyklus
 
nur für Klarheit und als praktisches Beispiel trage ich einen Teil der Codezeilen, die ich schrieb, um (als Einzelzeilen) den Kopf einer Brugola-Schraube zu zeichnen

; Aufnahmepunkteinfügung
(setq pxy (getpoint "\n platzieren Sie den Kopf der Schraube: ")))
(setq ang (getangle pxy "\n mit denen Neigung < bezogen auf 0 > : "))
(Befehl "osnap" no one)
; Achsausführung
(setq pxy5 (polar pxy (+ (gir 180) ang) (* k 2))
(setq pxy6 (polar pxy ang (* k 1.5)))
(Befehl "color" 3 "tilinea" "s" "centro"")
(Befehl "line" pxy5 pxy6")
; Kopfgestaltung
(Befehl "Farbe" 1 "tilinea" "s" "kontinuierlich")
(setq p (polar pxy (+ ang (gir 180)) k)
(setq pxy1 (polar pxy (+ ang) (d 2)))
(setq pxy4 (polar pxy (- ang (gir 90)) (/d 2))
(setq pxy2 (polar p (+ ang (gir 90))) (d 2 )))
(setq pxy3 (polar p (- ang (gir 90)) (/d 2 )))
(Befehl "linea" pxy1 pxy2 pxy3 pxy4 "c")
Ende

Ich verstehe nicht, wo ich die Liste schreiben sollte.

Vielen Dank.
 
nur für Klarheit und als praktisches Beispiel trage ich einen Teil der Codezeilen, die ich schrieb, um (als Einzelzeilen) den Kopf einer Brugola-Schraube zu zeichnen
(setq listentita (ssadd)); am Anfang der Liste. einmal während der Ausführung der gesamten Lispe
; Aufnahmepunkteinfügung
(setq pxy (getpoint "\n platzieren Sie den Kopf der Schraube: ")))
(setq ang (getangle pxy "\n mit denen Neigung < bezogen auf 0 > : "))
(Befehl "osnap" no one)
; Achsausführung
(setq pxy5 (polar pxy (+ (gir 180) ang) (* k 2))
(setq pxy6 (polar pxy ang (* k 1.5)))
(Befehl "color" 3 "tilinea" "s" "centro"")
(Befehl "line" pxy5 pxy6")(setq ultima (Gerät (Auto)))
(ssadd ultima listaentita)
; disegno della testa
(Befehl "Farbe" 1 "tlinea" "s" "kontinuierlich"")
(setq p (polar pxy (+ ang (gir 180)) k)
(setq pxy1 (polar pxy (+ ang (gir 90)) (/d 2)))
(setq pxy4 (polar pxy (- ang (gir 90)) (/d 2)))
(setq pxy2 (polar p (+ ang (gir 90)) (/d 2 )))
(setq pxy3 (polar p (- ang (gir 90)) (/d 2 )))
(Befehl "linea" pxy1 pxy2 pxy3 pxy4 "c")(setq ultima (Gerät (Auto)))
(ssadd ultima listaentita)
Ende

Ich verstehe nicht, wo ich die Liste schreiben sollte.

Vielen Dank.
Doppelrote Reihe kann durch (ssadd (entget (auto)) listaentiteWenn Sie den Code verkürzen und 1 Variable speichern wollen - es ist eleganter, aber es ist schwieriger zu lesen, wenn Sie die Liste für Korrekturen sehen.
 
In der Tat sind Sie vollkommen richtig, ich bemerkte den Fehler gestern Abend, während ich meine Liste lief :rolleyes:
 
Fragen zum Thema, zum Guru.
nach der Schaffung einer neuen Entitätslinie, gibt es eine Möglichkeit, es auf einen bestimmten Wert zu verkürzen (Typ lenghten, um uns zu verstehen), beginnend von einem extremen gewählt von einem Punkt?
Ich möchte dies schnell tun, ohne auf eine Reihe von ifs und Berechnungen zurückzugreifen, um festzustellen, ob der gewählte Punkt am Anfang oder am Ende der Linie ist und dann die entgegengesetzte Koordinaten um Länge und Winkel der bestehenden Einheit neu berechnet. .
 
Sie meinen die "totale" Option des "long" Befehls?
in einer Liste, in einer direkten und ohne Berechnungen, ist es nicht möglich.
 
Ich habe die Liste repariert. Das einzige ist, dass Sie im letzten Befehl (_block) die erstellte Liste nicht auswählen, indem Sie den Fehler melden: keine gültige Auswahl.
 
Ich habe es versucht, aber es gibt immer noch denselben Fehler: Der Befehl _block erzeugt den Fehler *keine gültige Auswahl*
 
(Befehl "-block" "pluto" "0,0" pippo "")

Wo pluto der Name des Blocks ist, ist "0,0" der Insertionspunkt und pippo ist die Liste der Entitäten
Es funktioniert für mich.
nicht _block sondern -block
 
Leider gibt es mir den gleichen Fehler wie vor: nicht gültige Auswahl.
der Befehl -block benötigt:
1) Blockname
2) Einführungspunkt
3) wählen Sie Objekte ---> und erzeugt hier Fehler, da ich die Liste passe...

auch die vorherige Zeile: (Befehl "_select"-Liste) lesen Sie nur die letzten beiden Einheiten

Wo ist der Hippo?

Danke für Ihre Geduld.
 
dann der Fehler, den Sie auf der Liste haben, versuchen Sie zu verstehen, was Sie hinzufügen (haben Sie alle Einheiten in der Liste? )

zu verstehen, beachten Sie, dass, wenn Sie auf der Befehlszeile Ihre Lisp-Linie schreiben, acad es leitet. Vielleicht legen Sie neben der Liste und Zeile für Zeile Kopieren-Paste aus der Liste auf die Befehlszeile und sehen Sie acad, welche Antworten Sie.

Sie können auch die Werte Ihrer Variablen aufrufen, zum Beispiel
Bewegung -> Objekte auswählen
!
sehen, was Sie ausgewählt haben
(der Ausrufpunkt vor der Variablen liest den Wert der Befehlszeilenvariablen)
 
dann wiederholen:
- Ich habe die Codezeilen wie vorgeschlagen eingegeben (siehe unten für Bequemlichkeit):
(Einzelliste); Aufnahmepunkteinfügung
(setq pxy (getpoint "\n platzieren Sie den Kopf der Schraube: ")))
(setq ang (getangle pxy "\n mit denen Neigung < bezogen auf 0 > : "))
(Befehl "osnap" no one)
; Achsausführung
(setq pxy5 (polar pxy (+ (gir 180) ang) (* k 2))
(setq pxy6 (polar pxy ang (* k 1.5)))
(Befehl "color" 3 "tilinea" "s" "centro"")
(Befehl "line" pxy5 pxy6") (ssadd (entlast) lista); disegno della testa
(Befehl "Farbe" 1 "tlinea" "s" "kontinuierlich"")
(setq p (polar pxy (+ ang (gir 180)) k)
(setq pxy1 (polar pxy (+ ang (gir 90)) (/d 2)))
(setq pxy4 (polar pxy (- ang (gir 90)) (/d 2)))
(setq pxy2 (polar p (+ ang (gir 90)) (/d 2 )))
(setq pxy3 (polar p (- ang (gir 90)) (/d 2 )))
(Befehl "linea" pxy1 pxy2 pxy3 pxy4 "c")
(ssadd (entlast) lista), fein (Befehl "_select" lista)
(Befehl "-block" "testa" "0.0" lista "")
(Befehl "_.-insert" testa pxy "" "")- es gibt mir Fehler: *keine gültige Auswahl*
- Tippen! Liste Ergebnisse: Auswahlset eine Nummer oder einen Buchstaben- endlich bekannt, dass es mich in Wirklichkeit nur die Achse und die erste Strecke der Linie (zwischen dem Pxy-Punkt und pxy1) ausgewählt hat

Im Wesentlichen möchte ich sicherstellen, dass ich wählen kann, ob die Lise den Kopf der Schraube oder mit einzelnen Hüben (und dies hatte ich bereits mit dem Code oben gelungen) oder als Block, aber immer innerhalb der Lispe und immer als Punkt der Einführung der Pxy Punkt.

Vielen Dank
 
Natürlich haben Sie nur die erste Zeile ausgewählt.
jede Zeile ist eine Einheit für sich, Sie sollten Stück für Stück hinzufügen.
testen, indem die Zeile mit _pline ersetzt wird, so dass die gesamte Zeile ein Objekt ist.
 
indem ich die folgenden Änderungen gelöst habe:
- ersetzte Linie mit Sockel (wie vorgeschlagen)
- apici hinzugefügt, um Listenbefehl auszuwählen (erzeugt jetzt nicht mehr ungültige Auswahlfehler)
Ich muss das Problem lösen, den Block jedes Mal umzubenennen.

Vielen Dank.
 

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