polylinien

polylinien

raumin
Contributor Contributor
852 Views
9 Replies
Message 1 of 10

polylinien

raumin
Contributor
Contributor

guetn tag

ich möchte mehrere zusammenhängende polylinien machen.

jetzt kann ich nur eine linie machen von a nach b.

was mach eich falsch?

 

---------------------------------

(defun c:uv_polyl_001 ( / )


(command "-layer" "se" "0" "")
(command "_pline" pause pause "")
(command "EIGÄNDR" "letztes" "" "fa" "253" "")
(command "pedit" "letztes" "br" "3" "")


)

 

0 Likes
853 Views
9 Replies
Replies (9)
Message 2 of 10

cadffm
Consultant
Consultant

Willst du wirklich mehrere Polylinien erzeugen, oder vielleicht eher nur EINE mit MEHREREN Stützpunkten?

Nur ein: Dann könntest du vor Befehls aufruf einfach NOCHMAL starten, oder am Ende deiner Zeilen die Funktion selbst noch mal aufrufen.

 

Für eine Polylinie mit mehreren Stützpunkten: Du fragst nur zwei Punkte ab und beendest den Befehl dann,

daher wirkt die Frage was du "falsch" machst etwas merkwürdig? Möchte man mehrere Stützpunkte unbekannter Anzahl zulassen,

so muß man entweder alle Stützpunkt vorher abfragen und speichern (getpoint), wobei das aber die Funktionalität des PLINIE Befehl einschränkt,

oder immer wieder abfragt ob der Befehl noch am laufen ist und so lange dem Benutzer eine Benutzereingabe geben.

Letztere "schöne" Variante könnte so aussehen:

 

(defun c:TEST ()
(command ".PLINIE")
(while (/=(getvar "CMDACTIVE")0)(command pause))
(command ".EIGÄNDR" "letztes" "" "layer" "0" "fa" "253" "")
(command ".PEDIT" "letztes" "br" "3" "")
)

Sebastian

0 Likes
Message 3 of 10

raumin
Contributor
Contributor

Danke, so ist es perfekt.

0 Likes
Message 4 of 10

CodeDing
Advisor
Advisor

@cadffm ,

 

Can this also work? Is one way better than the other?

(command ".PLINIE")
(while (/= (getvar "CMDACTIVE") 0) (command pause))
-v-v-v-v-v-v-v-v-v- (command-s ".PLINIE")

Best,

~DD

0 Likes
Message 5 of 10

cadffm
Consultant
Consultant

>"Can this also work?"

Just testing and you know it. And i know - you know it - even without testing :))

Sure!

 

 

>"Is one way better than the other?"

I think for this user no one is better than the other one, but if you aks me:

It's depend of what you more try or needs.

a) speed is not a question in this case (Inputs by User)

b) If you like to have code that should work in most versions as possible (This thought at this "command massacre", lol)

     Then the 'command' version is better then the command-s (2012)

c) If you like clean looking code, command-s is better

d) if you like both, you have to use command-s and a routine that creates an command-s if not available..(legacy case)

 

In my case/answer i tried to promote understanding of the problem

 

 

Sebastian

Message 6 of 10

raumin
Contributor
Contributor

hallo

wenn ich den befehl mit esc abbreche dann funktioniert das lisp nicht. können sie das noch anpassen?

0 Likes
Message 7 of 10

cadffm
Consultant
Consultant
>"wenn ich den befehl mit esc abbreche"
Warum bricht man denn einen Befehl ab obwohl man diesen nur verlassen möchte?
Genau DAS ist der Grund warum Acad auf der ganzen Welt belächelt wird, weil die Benutzer wie
wild auf der ESC Taster herumkloppen und das sieht dann ganz schon lustig aus wenn diese an
einem Programm sitzen bei dem ESC nicht für alles Mögliche missbraucht werden kann Smiley LOL
 
 
>"dann funktioniert das lisp nicht."
Naja, wenn du abbrichst, dann brichst du ab. Möchtest du das der Code weiter ausgeführt wird, breche nicht ab.
 
 
>"können sie das noch anpassen?"
Als Dienstleister könnte ich das machen, aber in dieser Umgebung gebe ich lieber Hilfe anstatt wie
zuvor bereits geschehen, Fertiglösungen.
Schon die bestehende Version ist aber problematisch, also eigentlich ist der Wunsch mit dem "Abbruch"
noch 1,2 Schritte zu weit in der Zukunft.
 
Was passiert denn (ohne Abbruch) wenn der aktuelle Layer gesperrt ist?
Derartige "einfache" Probleme sollte wohl zuerst gelöst werden.
 
Und dann beim erstellen: Man sieht nicht die richtige Farbe, nicht die richtige Breite, stört das nicht?
Ich als Anwender wollte vermutlich beim erstellen bereits die Farbe/Breite sehen kömnnen.
Wäre das nicht erstrebenswert?
 
Und wenn es dann irgendwann um ABBRUCH geht:
-
 
Was zu machen ist: Man benötigt eine Fehlerroutine. Siehe Hilfe-[F1] About Using the *error* Function (AutoLISP)
Dieses Thema ist nicht gerade was für den Anfang, obwohl es perfekt an dieser Stelle wäre.
 
Da ich aber spätestens beim Einsatz einer Error-Routine würde ich dann mit Programmierung
anfangen und Farbe, Polylinienbreite usw. nicht über command steuern.
(Wobei der Polylinien-Befehl selbst, den würde auch ich weiterhin nutzen, wofür alles neu machen was es bereits nativ gibt)
 
Einsatz einer eigenen Error-Routine in dem Fall.
 
Man überschreibt die Interne *error* Funktion und damit diese prüfen kann ob überhaupt ein neues Objekt vorhanden ist,
merkt man sich vorher "das letzte Objekt", Siehe Hilfe-[F1] ENTLAST
Werte and ein Symbol/Variable hängen: SETQ
usw.
Wenn die Funktion abgebrochen ist springt die Fehlerroutine an und wenn
das gemerkte "letzte Element" nicht mit dem aktuellen "letzten Element" übereinstimmt,
dann hat der Befehl PLINIE offenbar was erstellt, in dem Fall also
Eigenshcaften des letzten Elementes anpassen.
 
Wobei wie angesprochen: Ich selbst würde vor der ersten Benutzeingabe bereits , Layer Farbe Polylinienbreite einstellen,
so ist die Vorschau bereits korrekt.
Im Efolgs- und Abbruch-Fall würde ich dann Layer und Vorgabe der Polylinienbreite  zurücksetzen.

Sebastian

0 Likes
Message 8 of 10

raumin
Contributor
Contributor

sie verstehen mich falsch, esc wird erst gedückt sobald 2 Punkte definiert sind. (siehe Film)

 

0 Likes
Message 9 of 10

cadffm
Consultant
Consultant

Ich lese die Worte, jedoch sehe ich keinen Punkt an dem ich etwas falsch verstanden haben könnte.

Danke für das Video (bei CAD-Geschichten ist der AutoDESK SCREENCAST aber eigentlich das Mittel der Wahl, falls noch unbe...)

 

Das Video bekräftigt Ihre Beschreibung (In Sekunde8 erzeugen Sie den Abbruch) und entspricht genau dem worauf ich Stellung bezog.

Sebastian

0 Likes
Message 10 of 10

cadffm
Consultant
Consultant

@raumin  schrieb:

sie verstehen mich falsch, esc wird erst gedückt sobald 2 Punkte definiert sind. (siehe Film)

 


Es ist unerheblich wann man den Befehl abbricht, Abbruch ist Abbruch.

 

Sebastian

0 Likes