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

Nachfolgende Nummerierungsdrähte eines elektrischen Schaltplans

salmozzo

Guest
Hallo.
Ich versuche, meine Funktion auszufüllen, dass ich die Drähte eines elektrischen Schaltplans schnell nummerieren muss.
Ich habe schon das ganze Programm im Sinn, also gehe ich zu kleinen Schritten und teste jeden Zentimeter Code, weil ich nicht das falsche Programm selbst die einfachsten Dinge kenne.

in ein paar Worten der Code tut dies:
Wählen Sie einen Punkt auf autocad (Eingang).
die Koordinaten aufzeichnen
fügt zu diesen Koordinaten von x und y Zahlen hinzu, um die 4 Punkte zu identifizieren, wo sie gehen, um den Text einzufügen (wire numbering)
dann die Nummer einfügen (Eingabe)den Text zum Ausdruck bringenformen Sie den Text in den 4 Punkten gefunden.

Das letzte Ziel ist:
Ich schreibe 15.



Nein.

Ich kam zu diesem Punkt:
(Defun c:silpi4 ()
; die 4 Koordinaten der Texte einstellen
(setq p0 (getpoint "\n click")); Referenzpunkt (Eingang)
(setq x_p1234 (+ 30)
(setq y_p1 (+ 80 (cadr p0))
(setq y_p2 (+ 75 (cadr p0))
(setq y_p3 (+ 70 (cadr p0))
(setq y_p4 (+ 65 (cadr p0))

; Eingangsnummer
(setq num (getint "\n Geben Sie eine Nummer ein))

; 4 Texte festlegen
(setq r_text "r")
(setq s_text "s")
(setq t_text "t)
(setq n_text "n")

; die 4 Texte schreiben
(Befehl "text" (Liste x_p1234 y_p1) "2.5" "0" r_text ") ; Text in Punkt 1 schreiben
(Befehl "text" (Liste x_p1234 y_p2) "2.5" "0" s_text"); Text in Nummer 2 schreiben
(Befehl "text" (Liste x_p1234 y_p3) "2.5" "0" t_text ") ; Text in Punkt 3 schreiben
(Befehl "text" (Liste x_p1234 y_p4) "2.5" "0" n_text ") ; Text in Punkt 4 schreiben
dann gibt es viele andere Dinge, die ich hinzufügen möchte:
Ich habe sechs Stunden gearbeitet. und es ist etwa 1 Stunde und eine Hälfte, dass ich immer noch die Lösung finde, r mit 15 zu verschmelzen
Dank, wer mir helfen kann
 
oppuri

; impost 4 tei
(setq r _ text (strata "r" (rtos num 2 0))
(setq s _ text (dicht "s" (rtos num 2 0))
(setq t _ text (dicht "t" (rtos num 2 0))
(setq n _ text (strata "n" (rtos num 2 0))
 
Danke.

(((((((((((((((((((((((((((()))))))))))))
Also muss ich Skripte lernen und in Skripte konvertieren.

haben sie/Sie führer zu empfehlen?
 
ein Skript ist einfach eine Reihe von Befehlen, als ob Sie sie von der Tastatur geben.
eine Nummer zu einem String mit dem Skript passen.
 
Gestern Ich versuchte etwas mit Skripten zu tun, aber nicht zu viel Zufriedenheit. .
Ich will meine Funktion mit Lisp fortsetzen.

Das letzte Update steht unter dem Spoiler.
- eingefügte Möglichkeit, ein Präfix hinzuzufügen
- hinzugefügt endlos, während Zyklus, um die Anzahl der Draht zu erhöhen
Code:
(Defun c:silpi7)
(setq pref (getstring "\n ein Präfix einfügen: ")
(setq num (getint "\n Geben Sie eine Nummer ein: (a) die erste Nummer

(while t; Endlosschleife beginnt

die 4 Koordinaten der Texte festlegen
(setq p0 (getpoint "\n click")); Referenzpunkt (Eingang)
(setq x_p1234 (+ 10 (car p0)));
(setq y_p1 (+ 30 (cadr p0))
(setq y_p2 (- y_p1 5)
(setq y_p3 (- y_p2 5)
(setq y_p4 (- y_p3 5)

; Umsetzung der vier Texte
(setq r_text (strcat "r" pref (rtos num 2 0)))
(setq s_text (strcat "s" pref (rtos num 2 0)))
(setq t_text (strcat "t" pref (rtos num 2 0)))
(setq n_text (strcat "n" pref (rtos num 2 0)))

;

;; Schreibe 4 Texte
(Befehl "text" (Liste x_p1234 y_p1) "2.5" "0" r_text ) ; Text in Punkt 1 schreiben
(Befehl "text" (Liste x_p1234 y_p2) "2.5" "0" s_text ) ; Text in Nummer 2 schreiben
(Befehl "text" (Liste x_p1234 y_p3) "2.5" "0" t_text ) ; Text in Punkt 3 schreiben
(Befehl "text" (Liste x_p1234 y_p4) "2.5" "0" n_text ) ; Text in Punkt 4 schreiben

(setq num (+ num 1 )); die Zahl der nächsten Schleife erhöhen
)
)
An diesem Punkt möchte ich eine Option erstellen, um mir zu erlauben, meinen Code in 2 Optionen zu teilen:
1) 4 Pole, die ich die üblichen 4 Fäden r,s,t,n drucke
(2) 2
hier statt Ich möchte nur r,n dann sn dann tn und dann von r.

die Texteinstellung Teil gibt es:
Wenn ich in Modalitäten bin, werde ich eine neue Zählung "num_2poli" starten
die den Rest der Spaltung mit 3 berechnet, um zu verstehen, welche Stufe zwischen r,s,t ich zu drucken
(setq rest (rem num_2poli 3))
das Problem ist die Schaffung der beiden Optionen 4poli und 2poliDanke.
 
Sie müssen eine Wahl aktivieren, wenn übersetzt wörtlich bedeutet, wenn
(Initget "4poli" "2poli") ;; dies erlaubt, die Eingabe nach den nur 2 Strings, die angegeben sind, oder den Zahlen 4 und 2 zu begrenzen.(setq Auswahl (getkword "Typ Schaltung: ")(wenn (= Wahl "2poli)
(Progn)
alle Liste
;
;

(wenn (= Wahl "4poli)
(Progn)
alle Liste
;
;
 
alles funktioniert perfekt dank tausend
Die einzige Korrektur kann ich tun, dass der Befehl(Initget "4poli" "2poli")
Du hast zu viele "(Initget "4poli 2poli")
so ist es richtig
Code:
; Ich füge eine Zahl ein und füge sie schrittweise rstn hinzu
; eingestelltes Präfix
; andere Wahl 2poli,3poli,4poli

(Defun c:silpi7)
(setq pref (getstring "\n Einfügen eines Präfixes: (a) voreingestellt
(setq num (getint "\n Geben Sie eine Nummer ein: (a) die erste Nummer
(setq num_2poli 0)

(while t; Endlosschleife beginnt

die 4 Koordinaten der Texte festlegen
(setq p0 (getpoint "\n click")) ; Eingangs-Bezugspunkt
(setq x_p1234 (+ 10 (car p0)));
(setq y_p1 (+ 30 (cadr p0))
(setq y_p2 (- y_p1 4)
(setq y_p3 (- y_p2 4)
(setq y_p4 (- y_p3 4) ;koordinate y vierter Punkt

; Umsetzung der vier Texte
(setq r_text (strcat "r" pref (rtos num 2 0)))
(setq s_text (strcat "s" pref (rtos num 2 0)))
(setq t_text (strcat "t" pref (rtos num 2 0)))
(setq n_text (strcat "n" pref (rtos num 2 0)))

(Initget "2poli 3poli 4polies")
(setq Auswahl (getkword "Typ Schaltung: ")

(wenn (= Wahl "2poli")
(Progn)
; Phase 2 Pole
(setq rest (rem num_2poli 3))
(setq num_2poli (+ num_2poli) 1)
(cond)
((= Rest 0)(setq 2poli_text r_text))
((= Rest 1)(setq 2poli_text s_text))
((= Rest 2)(setq 2poli_text t_text))
)
; 2 Texte schreiben
(Befehl "text" (Liste x_p1234 y_p2) "2.5" "0" 2poli_text ) ; Text in Nummer 2 schreiben
(Befehl "text" (Liste x_p1234 y_p3) "2.5" "0" n_text ) ; Text in Punkt 3 schreiben
)

;

(wenn (= Wahl "3poli")
(Progn)
; 3 Texte schreiben
(Befehl "text" (Liste x_p1234 y_p1) "2.5" "0" r_text ) ; Text in Punkt 1 schreiben
(Befehl "text" (Liste x_p1234 y_p2) "2.5" "0" s_text ) ; Text in Nummer 2 schreiben
(Befehl "text" (Liste x_p1234 y_p3) "2.5" "0" t_text ) ; Text in Punkt 3 schreiben
)
;

(wenn (= Wahl "4poli")
(Progn)
;; Schreibe 4 Texte
(Befehl "text" (Liste x_p1234 y_p1) "2.5" "0" r_text ) ; Text in Punkt 1 schreiben
(Befehl "text" (Liste x_p1234 y_p2) "2.5" "0" s_text ) ; Text in Nummer 2 schreiben
(Befehl "text" (Liste x_p1234 y_p3) "2.5" "0" t_text ) ; Text in Punkt 3 schreiben
(Befehl "text" (Liste x_p1234 y_p4) "2.5" "0" n_text ) ; Text in Punkt 4 schreiben
)
;

(setq num (+ num 1 )); die Zahl der nächsten Schleife erhöhen
)
)
Wenn Sie Parameter ändern möchten?
beispielsweise die Höhe des Textes oder die Koordinaten. .

am Anfang des Programms möchte ich die Möglichkeit haben, diese Parameter zu ändernaber mit defauf-Werten , in der Weise, sie nicht an jeder Öffnung des Befehls einzufügen
Ist das möglich?
 
großartig
Du hast mir viel geholfen.
Dies ist das letzte Ergebnis
Code:
; Ich füge eine Zahl ein und füge sie schrittweise rstn hinzu
; eingestelltes Präfix
; andere Wahl 2poli,3poli,4poli
; zusätzliche Möglichkeit, Texthöhe zu ändern
; zusätzliche Möglichkeit, die Anfangsphase der 2 Pole zu ändern
; Hinzufügen von Anfangsparametern mit Standardvorgabewerten ändern

(Defun c:silpi8 ()

(Sectq pref nil)
(setq pref (getstring "prefectious: <vuoto> "
(sofern (= pref nil) (setq pref)

(setq num nil)
(Initget 6)
(setq num) (getint "Zahlungsbeginn: <0> ")
(wenn (= num nil) (setq num 0)

(setq phase_2poli nil)
(Initget "1 2")
(setq phase_2poli (getkword "\n initial phase 2 poles: <r> Presse 1 pro Phase s; Presse 2 pro Stufe t)
(falls (= Phase_2poli nil) (setq phase_2poli 0)

(setq htesto nil)
(Initget 6)
(setq htesto (getreal "Texthöhe: <2.5> ")))
(wenn (= htesto nil) (setq htesto 2.50))

(while t; Endlosschleife beginnt

die 4 Koordinaten der Texte festlegen
(Initget 9)
(setq p0 (getpoint "\n click")) ; Eingangs-Bezugspunkt
(setq x_p1234 (+ 10 (car p0)));
(setq y_p1 (+ 30 (cadr p0))
(setq y_p2 (- y_p1 (* htesto 1.6));
(setq y_p3 (- y_p2 (* htesto 1.6));
(setq y_p4 (- y_p3 (* htesto 1.6));

; Umsetzung der vier Texte

(setq r_text (strcat "r" pref (rtos num 2 0)))
(setq s_text (strcat "s" pref (rtos num 2 0)))
(setq t_text (strcat "t" pref (rtos num 2 0)))
(setq n_text (strcat "n" pref (rtos num 2 0)))

(Initget 9 "2poli 3poli 4poli"); verhindert die Nichteinhaltung der Art des Zirzits
(setq Auswahl (getkword "Typ Schaltung: ")

(wenn (= Wahl "2poli")
(Progn)
; Phase 2 Pole
(seq rest (rem phase_2poli 3))
(setq phase_2poli (+ phase_2poli) 1)
(cond)
((= Rest 0)(setq 2poli_text r_text))
((= Rest 1)(setq 2poli_text s_text))
((= Rest 2)(setq 2poli_text t_text))
)
; 2 Texte schreiben
(Befehl "text" (Liste x_p1234 y_p2) htesto "0" 2poli_text )
(Befehl "text" (Liste x_p1234 y_p3) htesto "0" n_text )
)

;

(wenn (= Wahl "3poli")
(Progn)
; 3 Texte schreiben
(Befehl "text" (Liste x_p1234 y_p1) htesto "0" r_text )
(Befehl "text" (Liste x_p1234 y_p2) htesto "0" s_text )
(Befehl "text" (Liste x_p1234 y_p3) htesto "0" t_text )
)
;

(wenn (= Wahl "4poli")
(Progn)
;; Schreibe 4 Texte
(Befehl "text" (Liste x_p1234 y_p1) htesto "0" r_text )
(Befehl "text" (Liste x_p1234 y_p2) htesto "0" s_text )
(Befehl "text" (Liste x_p1234 y_p3) htesto "0" t_text )
(Befehl "text" (Liste x_p1234 y_p4) htesto "0" n_text )
)
;

(setq num (+ num 1 )); die Zahl der nächsten Schleife erhöhen
)
) </r></vuoto>
die letzte Änderung Ich machte, war dies unten, es erlaubt mir nicht zu drücken Eingabe, wenn ich nicht vorher klicken (vor es stürzte die Funktion) (Initget 9) Nichteinhaltung von Koordinaten
(setq p0 (getpoint "\n click")) ; Eingangs-Bezugspunkt
 

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