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

Lisp für Legendenerstellung

  • Ersteller Ersteller mirco354
  • Erstellt am Erstellt am

mirco354

Guest
Guten Morgen für alle Jungs,
Ich möchte Sie fragen, ob Sie denken, dass es möglich ist, eine Lispe zu schaffen, die die Legende meines Designs schafft, so funktioniert:
1) starten Sie die Lispe, die mich bitten wird, einen Bereich auszuwählen, in dem Blöcke platziert werden
2) innerhalb dieses ausgewählten Bereichs sollten nur Blöcke berücksichtigt werden
3) ein Beispiel, innerhalb des ausgewählten Rechtecks findet der Block namens "001", "002", "003"
4) wenn Sie den Block "001" finden, müssen Sie den Block "001legenda" in Punkt 0.0
5) wenn Sie den Block "002" finden, müssen Sie den Block "002legenda" in Punkt 2.0 eingeben
6) wenn Sie den Block "003" finden, müssen Sie den Block "003legenda" in Punkt 4,0 eingeben
7) und so weiter, denkst du, es ist machbar?
8) Ich sollte eine Art Paarung zwischen dem in der Zeichnung gefundenen Symbol und seinem relativen Legendensymbol machen, das ich in den Bücherregalen habe
9) Wenn Sie einen Block in der Zeichnung finden, der nicht mit einem Legendensymbol verbunden ist, sollten Sie es nicht betrachten

sind in deinen Händen,
Danke.
 
Alternativ könnte es so funktionieren, wenn möglich:
1) starten Sie die Lispe, die mich bitten wird, einen Bereich auszuwählen, in dem Blöcke platziert werden
2) innerhalb dieses ausgewählten Bereichs sollten nur Blöcke berücksichtigt werden
3) ein Beispiel, innerhalb des ausgewählten Rechtecks findet der Block namens "001", "002", "003"
4) dann in einem bestimmten Punkt muss es den Block "001" einfügen, zusammen mit einer Beschreibung I erstellen (Standard, wenn möglich, setzen Sie ihn direkt in die Lispe) und so weiter für die anderen Blöcke es findet.
Ist es möglich für dich?
Können Sie mir bitte helfen?
Danke.
 
Ich kann nicht verstehen, warum Sie nicht trainieren einen Dwg mit dem, was Sie wollen, Sie müssen immer interpretieren, was Sie in Ihrem Kopf haben.
die Beschreibung sollte unten, oben, Seite an Seite und wie viele Zeichen platziert werden? Sollen die Blöcke nach dem Namen bestellt werden? Sind Namen immer aus Zahlen zusammengesetzt? wenn ich nicht 002 finde, wird sein Ort in Legende vom nächsten genommen oder bleibt leer?
 
Tut mir leid, gp.
Ich ziehe dir eine Zeichnung, wo ich beschrieben habe, was ich brauche! Ich hoffe, es ist etwas klarer! Vielen Dank!
 

Anhänge

die Basis der Abfahrt könnte mein conblok sein. lsp:
Wenn Sie Blöcke (andere als einander) in einem Teil der Zeichnung auswählen, dann wird der Befehl gezählt und die n. und den Namen in einer Tabelle eingeben.

in Ihrem Fall können Sie ihm sagen: Wenn Sie den Block "001" auf der Zeichnung den Block "10001" finden, wenn Sie den Block "002" finden, geben Sie den Block "10002" usw.
 

Anhänge

Hallo, fangen Sie an.
Ich habe den Deckel geladen. sehr interessant, es ist auch bequem, computi metrici!
Ja, ich könnte das ändern, damit ich den Referenzblock einfügen kann. aber wie man es ändert? mehr als meine Liste von Blöcken mit relativen Antworten, wo sollte ich gehen, um es einzufügen?
Danke für die Verfügbarkeit
 
bye mirco354,
Prüfen Sie mit diesem, kopieren Sie den Ordner in > selbsttragen < in > c: < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < <
Laden Sie die lisp > table.lsp < hoch und lesen Sie die Informationen durch Klicken auf die > info < Taste.
 

Anhänge

Hallo Engel,
Ich versuchte, die Lippe zu laden, aber von einem Fehler (siehe Anhang).
Neben der Lispe schafft eine Tabelle, aber dann die Symbol-Verein in der Pflanze mit ihrem Symbol in Legende nach mir das erste Mal, dass ich es tun muss, nicht Sie denken?
Danke.
 

Anhänge

  • Errore_Tabella.png
    Errore_Tabella.png
    2,1 KB · Aufrufe: 3
Ich denke, dass von 11start ist gut, aber anstatt die Anzahl der Blöcke einzufügen sollte den relativen Block der Legende, aber ich weiß nicht, wie man die Datei ändern:-(







die Basis der Abfahrt könnte mein conblok sein. lsp:
Wenn Sie Blöcke (andere als einander) in einem Teil der Zeichnung auswählen, dann wird der Befehl gezählt und die n. und den Namen in einer Tabelle eingeben.

in Ihrem Fall können Sie ihm sagen: Wenn Sie den Block "001" auf der Zeichnung den Block "10001" finden, wenn Sie den Block "002" finden, geben Sie den Block "10002" usw.
 
Wenn ich einen Moment Zeit habe, habe ich eine Liste.... jetzt muss ich in den Garten gehen, um das Gras zu schneiden!
 
Hallo Engel,
Ich versuchte, die Lippe zu laden, aber von einem Fehler (siehe Anhang).
Neben der Lispe schafft eine Tabelle, aber dann die Symbol-Verein in der Pflanze mit ihrem Symbol in Legende nach mir das erste Mal, dass ich es tun muss, nicht Sie denken?
Danke.
Hallo, mirco354, es tut mir leid, aber ich vergaß, einen Code einzugeben.
für den Betrieb des Programms, müssen Sie in die lisp (Ich habe es direkt in acad.lsp)
Diese Instrumente:
Code:
;;;

(defun runapp (Befehle$ sichtbar metodo / wscript)
(wenn (setq wscript (vlax-get-or-create-object "wscript.shell"))
(falls sichtbar)
(vl-catch-all-apply 'vlax-invoke-method (Liste wscript "run" Befehle$ 1 metodo))
(vl-catch-all-apply 'vlax-invoke-method (list wscript "run" commands$ 6 metodo))
)
)
(princ)
; defun


;;@setcliptext

(defun setcliptext(str / html Ergebnis)
(wenn (= 'str)
(Prog.)
(setq html (vlax-create-object "htmlfile"))
(vlax-invoke (vlax-get (vlax-get html 'parentwindow) 'clipboarddata) 'setdata "text" str)
(vlax-release-object html)
),
; falls
; defun

; -----------------

;;@getcliptext

(Defun getcliptext(/ html Ergebnis)
(setq html (vlax-create-object "htmlfile"))
(setq Ergebnis (vlax-invoke (vlax-get (vlax-get html 'parentwindow) 'clipboarddata') 'getdata "text")
(vlax-release-object html)
Ergebnis
; defun

; -----------------

(defun messaggiox)
(Setcliptext stringax)
(runapp "c:\\autocadsupporto\libertytre\alertstandard.exe " "c:\\autocadsupporto\libertytre\alertstandard.tkn" :vlax-true)
; defun

; ---------------------------------------------------

(defun assemblastringhe (/ Lunge)

(setq lung (- 12 (strlen stringa1))
(Wiederholung)
(setq stringa1 (strcat " " stringa1))
; repeat

(setq lung (- 12 (strlen stringa2))
(Wiederholung)
(setq stringa2 (strcat " " stringa2))
; repeat

(setq lung (- 12 (strlen stringa3))
(Wiederholung)
(setq stringa3 (strcat " " stringa3))
; repeat

(setq lung (- 12 (strlen stringa4))
(Wiederholung)
(setq stringa4 (strcat " " stringa4))
; repeat

(setq stringax (strcat stringa1 stringa2 stringa3 stringa4))

);

; ---------------------------------------------------
für gute Operation (für Ausrichtung), sollten Sie den Stil > arial < annehmen.
Wenn etwas fehlt, zögern Sie nicht zu fragen.
Tschüss.
 
.... hier ist eine noch heiße Lispe: frisch gebacken!
Durch das Starten der Lisp-Legende wird die Auswahl der Blöcke benötigt (z.B. 001 002 023 Ihres dwg).
das Programm fordert, einen leeren Punkt auf dem Design anzugeben und einen Wert für die Interline zu geben (durch Senden verwendet den Wert 8); dann zieht die Legende.

die Zeilen der Legende sind nur Blöcke, deren Name gleich der der ausgewählten Blöcke ist, mit vor dem Wert 10 (001 -> 10001 - 002 -> 10002 usw.).

das Programm macht eine grobe "scrematura", ignoriert die Blöcke mit Namen, die nicht Zahlen sind (transformieren Sie den Namen in eine ganze Zahl und überprüfen Sie, ob es größer als 0 ist): dann wird in Ihrem Beispiel der Block "Raum" verworfen, auch wenn ausgewählt. wie ich sagte, die scrematura ist grob, da sie nicht kontrollieren oder wenn sie ausgewählte Blöcke sind, die bereits Teil der Legende sind (10002 hält es für gültig ... aber dann würde es den Fehler geben, wenn versuchen, in Legende den Block 1010002) setzen, und auch wenn sie ausgewählte Namen sind, die dann nicht eine entsprechende als Legende haben: 004 gehört zu den Blöcken der Zeichnung, aber er findet nicht 10004.
Dies bedeutet, dass, wenn Sie ein neues Design erstellen, müssen Sie sich daran erinnern, eine Datei, die alle Blöcke enthält, die Sie benötigen, einzufügen.

Ein weiteres Problem ist die Interline, die ich standardmäßig auf 8 gesetzt (durch Senden), die der Höhenwert der Blöcke 10001 und 10002 ist. für 10023 würde die Höhe 12 betragen, so gäbe es eine Überlappung, wenn andere Elemente darunter wären; daher sollte die Zwischenlinie variabel sein. Das erschwert die Dinge, denn ich kann nicht wissen, "die Belastbarkeit" eines Blocks, den ich einfügen werde. Der einzige Weg wäre, in diesem Block ein festes Attribut zu setzen, das diesen Wert angibt... und dann den Code anzupassen, damit er diesen Wert lesen kann.

in dieser Hinsicht frage ich den "forum guru" wenn es einen einfachen und schnellen Weg gibt, der es mir erlaubt, "die encumbrance" eines Blocks zu finden: es la coord. nach links und nach rechts. wäre bei verschiedenen Gelegenheiten nützlich. .
 

Anhänge

.... es gibt einen einfachen und schnellen Weg, der mir erlaubt, "die Belastbarkeit" eines Blockes zu finden: es la coord. nach links und nach rechts. wäre bei verschiedenen Gelegenheiten nützlich. .
Sie können die Begrenzung Box Methode verwenden:
(setq obj (Auto))
(vla-getboundingbox (vlax-ename->vla-object obj) 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
(setq p2 (vlax-safearray->list p2))
p1 und p2 ergeben sich im unteren linken und oberen rechten Bereich des Rechtecks mit Objekten.
Präzision ist perfekt für fast alle Objekte, während Splines und Blöcke angenähert werden können.
 
aber zu programmieren in lisp Sie studiert allein? oder ich weiß nicht, dass es Bücher, Kurse usw. gibt... wissen Sie, wo ich etwas finden könnte?
 
Ich spreche für mich: Ich begann mit der Zeit, sehr triviale Programme zu verstehen und zu tun... jetzt gibt es Foren wie diese, aber einmal gab es nichts und Sie ein Jahrhundert sogar zu lernen, wie man eine Linie auf Autocad zeichnen. dann, wie Sie sehen, ich habe noch riesige Lücken und die erfahrensten Mitglieder wie gp sind eine wertvolle Ressource. Ich zitiere ihn, weil er geholfen hat, diese Frage zu beantworten, aber es gibt viele andere!
 
Danke. Es ist leider schwer... Ich wäre bereit, liebe Ausbildung von 0 zu bezahlen. aber nicht gefunden
 

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