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

Teilen Sie c.a. Armornadeln.

  • Ersteller Ersteller Betoniera
  • Erstellt am Erstellt am

Betoniera

Guest
Verwaltungshinweis: diese Diskussion stammt aus einem anderen Faden, Das ist, über die Bestimmung des Zeit- oder Gegenuhrzeigersinns einer Polylinie. das Argument war der Ursprung der Entwicklung dann des lisp-Objekts dieses Fadens.


der Zeit-Zeit-Sense nur auf geschlossenen Polylinien Sinn macht. Was ist der Punkt, eine offene Polylinie zu geben? für diese nur den umgekehrten Befehl. an der Grenze kann ich von der Auswahl alle offenen Polylinien entfernen. .
ersten Dank für die Antwort (neben sehr schnell).
Ich erkläre das Problem besser, also geben Sie mir vielleicht ein paar Tipps.
Ich habe eine Reihe von Lisp-Programmen entwickelt, um den Stahlbeton zu zeichnen.
insbesondere die Eisen, die sie als Polylie zeichnen, immer offen.
die Konstruktion der Eisen ist frei, daher habe ich einige zeitnahe Polylinien und andere gegen den Uhrzeigersinn.
wenn das Zitat von Polylinien geschieht:
Staffa2.jpgwie Sie sehen, die Zitate der ersten Klammer ist nicht akzeptabel, weil sich die Längen der Segmanten überlappen.
Ich schrieb 2 Lisp-Programme, eine, um polinese im Uhrzeigersinn zu zitieren und eine, um sie im Uhrzeigersinn zu zitieren.
das Problem ist, dass ich nicht den Sinn von Polynea kennen muss, um zu versuchen, das heißt:
- versuchen Sie, mit dem Quoten-polyneaorary-Porgramm zu zitieren. Wenn dies nicht akzeptabel ist, muss ich:
- Aufhebung der Quoten und Wiederholung der Operation mit dem Anti-Takt-Quotenprogramm.
Natürlich, wenn ich zuerst weiß, wie die plilinea gezogen wurde, dann aus dem Programm beginne ich das richtige Zitat.
In der Praxis sammelte ich die beiden Programme und es gäbe keine Möglichkeit von Fehlern, weil die Verwaltung dem Programm anvertraut ist.
Ich möchte dieses Programm perfektionieren, weil es natürlich mit meinem Handwerk (Stetric Engineer) sehr verwendet wird.
hallo und danke für die mögliche Antwort.
 
Zuletzt bearbeitet von einem Moderator:
Wie ich Ihnen sagte, mehr Stunden/Anti-Uhr müssen Sie über Rückwärts/nicht Rückwärts sprechen. In jedem Fall das Programm, das ich schrieb, würde ich sagen, dass Sie wenig brauchen, ich denke, es ist nicht die richtige Anwendung für die Art der Arbeit, die Sie tun müssen. eher, wenn ich einen Vorschlag geben kann und da Sie die Lispe kennen, könnten Sie ein einziges Kontingentspolynean-Programm erstellen. innerhalb dieses Programms gibt es zwei Unterprogramme: polyneaoräre Quote und apolyneaantioraria Quote.

Ich mache dir ein triviales Schema.

Ausgangsquotepolinea
Aktionärsabgang als Unterprogramm und Zeichnung von Quoten. am Ende der Aufforderungserklärung: in Ordnung? (s/n)
Wenn Sie s antworten, kommt das Programm heraus, wenn Sie n antworten, Stornozeichnungsquoten, Abgang von Quotepolyneaantioraria, Zeichnung von Quoten und dieses Mal ohne Bestätigungsveranlassung.

Was sagst du? Es ist das erste, was mir in den Sinn kam...
 
Ja, es könnte gehen.
Ich könnte den Test am Ende gut machen (/n). insbesondere mit Standardmäßig.
Wenn die Antwort n wäre, könnte ich sie benutzen, um in die gewünschte Position zurückzukehren.
1) Ich könnte den undo Befehl (exist in lisp?) n vole zurück gleich der Anzahl der Segmente von Polylinea (es handelt sich um Daten I).
2) Alternativ können Sie einen Punkt des Programms (vor dem polylinearen Zitat) und dann von Plan, zu diesem Punkt zurückzukehren? .
Ich experimentiere.
Ich bin froh, mit einer Lippe zu reden. Ich habe mich immer für Programme arrangiert (für viele Jahre). Wenn ich die Gelegenheit hatte, mit jemandem auszutauschen, wäre es viel einfacher gewesen. In jedem Fall habe ich einige ausgezeichnete Anwendungen für die Verwaltung von bewaffneten Zementen im Laufe der Jahre getan.

Hallo, und wenn Sie irgendwelche Vorschläge haben, kommen Sie.
 
Sie müssen nicht wissen, wie viele Segmente Sie zurück müssen, verwenden Sie einfach die _undo _begin und _undo _end Kombination oder, wenn Sie auch vlisp, vla-startundomark und vla-endundomark Funktionen.

Vielleicht wissen Sie schon, aber vor der Anfrage, wenn es okay ist, einzugeben (initget "s n"), auf diese Weise wird es nur die Antworten akzeptieren s o n:

(initget "s n")
(setq re(strcase (getkword "\nva bene) (s/n)

Auf diese Weise, auch wenn ich die winzige einfügen, wird es in Kapital umgewandelt.
 
...was Vorschlag, kommen Sie.
wie zu Recht gesagt, von confutatis macht keinen Sinn, über Stunden / Anti-Uhr in offenem Poly zu sprechen, aber weil Sie bereits Routinen für das Zitat haben, wertet diese Lösung aus, die Ihren Fall ab dem internen/externen Konzept lösen kann.

Pseudocode:
- Berechnung des Auswahlpunktes auf dem Poly
- Berechnung des Polytex unmittelbar vor dem Auswahlpunkt und den nächsten beiden
- Berechnung eines Punktes sofort rechts vom Auswahlpunkt
- überprüfen, ob Letzteres innerhalb oder außerhalb des Dreiecks aus den vorherigen drei Vertikeln besteht
- wenn es sich in der Verse herausstellt, ist Zeit, ansonsten gegen den Uhrzeigersinn.

die Routine, angepasst und am Anfang eingefügt, dann können Sie wissen, welche von Ihren Starts.
da die Berechnung die beiden nächsten Schritte zum Auswahlpunkt erfordert, nicht wählen Sie das Poly in seiner letzten Dehnung.

430.gif


Code:
(defun c:test ( / pl psel p1 n_par v1 v2 v3 pt l_v)
(setq pl (entsel "selezionare la staffa"))
(setq psel)
(setq pl (car pl)
(setq p1 (vlax-curve-getclosestpointto (vlax-ename->vla-object pl) psel t))
(setq n_par (fix (vlax-curve-getparamatpoint pl p1)))
(setq v1 (vlax-curve-getpointatparam pl n_par))
(setq v2 (vlax-curve-getpointatparam pl (1+ n_par))))
(setq v3 (vlax-curve-getpointatparam pl (+ 2 n_par))))
(Setq pt (polar p1 (- (Winkel v1 v2) (/pi 2)) 0,001)
(setq l_v (list v1 v2 v3 v1))
(falls (punto_interno l_v pt) (alert "orario")
)

......
(defun punto_interno (*lp* *p* / p_lontano attr p# pa pb)
(setq p_lontano (list (setq me (getvar 'extmax))) (1+)))
(setq attr 0)
(Repeat (1-(Länge * lp*)))
(Setq pa)
(setq pb (cadr *lp*))
(setq p# (inters pb *p* p_lontano))
(falls (/= p# nil) (setq attr (1+ attr))
(setq *lp*)
)
(falls (> (rem attr 2) 0) t nil)
)
......
(vl-load-com)
 
Da Sie darauf achten müssen, die Polylinea im letzten Abschnitt nicht auszuwählen, sind wir am Anfang, den Vers nicht zu kennen.
 
wie Sie sehen, die Zitate der ersten Klammer ist nicht akzeptabel, weil sich die Längen der Segmanten überlappen.Bedeutet es also, dass Sie in der zweiten Klammer als gültig für Overhead-Quoten akzeptieren? Ist dies abhängig von der Tatsache, dass Sie jedes Mal die x-Achse der ucs auf der Seite der Klammer, die Sie auflisten?
 
mit jeder Polylinie, je nach geklicktem Segment, gibt es mir Zeit und/oder gegen den Uhrzeigersinn...:frisch:
 
der Code ist für Klammern ähnlich wie die von betoniera, das ist rechteckig, dreieckig oder aber konvex Form.
Wenn Sie ein wenig rechts gehen und ein wenig links funktioniert nicht. :smile:
 
Hallo confutatis, hallo gp.
Danke für Vorschläge.
Ich habe das Programm wie von confutatis vorgeschlagen eingerichtet und es funktioniert bereits.
Ich trat die 2 Programme in einem, so ist es das Endprogramm hat ein fast identisches Duplikat von Anweisungen. es ist nicht genau das Beste als Programmierung, aber es funktioniert. Ich werde versuchen, es später zu rationalisieren.
zurück nach dem ersten Versuch Zitat habe ich die Anweisungen "kein Zeichen" und "nicht zurück" von Autocad verwendet.
Sie arbeiten gut.
Ich habe noch ein paar kleine Dinge zu setzen, aber die Fortpflanzung ist bereits funktionsfähig.
Danke für die Hilfe, nächstes Mal.
 
kleine Variation der Lise gp.
jetzt kann ich auch auf die Enden der Polylinea klicken, es wird immer genommen, um den zentralen Punkt auszuwählen. der Befehl funktioniert nicht an den Polylinien, die nur 2 Vertices haben.

Code:
(defun c:teston ( / pl psel p1 n_par v1 v2 v3 pt l_v)
(setq pl (Treiber "selezionare la staffa"))
(setq p1 (vlax-curve-getpointatdist (vlax-ename->vla-object pl))))
(setq n_par (fix (vlax-curve-getparamatpoint pl p1)))
(setq v1 (vlax-curve-getpointatparam pl n_par))
(setq v2 (vlax-curve-getpointatparam pl (1+ n_par))))
(setq v3 (vlax-curve-getpointatparam pl (+ 2 n_par))))
(Setq pt (polar p1 (- (Winkel v1 v2) (/pi 2)) 0,001)
(setq l_v (list v1 v2 v3 v1))
(falls (punto_interno l_v pt) (alert "orario")
)

......
(defun punto_interno (*lp* *p* / p_lontano attr p# pa pb)
(setq p_lontano (list (setq me (getvar 'extmax))) (1+)))
(setq attr 0)
(Repeat (1-(Länge * lp*)))
(Setq pa)
(setq pb (cadr *lp*))
(setq p# (inters pb *p* p_lontano))
(falls (/= p# nil) (setq attr (1+ attr))
(setq *lp*)
)
(falls (> (rem attr 2) 0) t nil)
)
......
(vl-load-com)
 
Interessant.
Ich versuche zu experimentieren.
Wenn es funktioniert, ist es im Vergleich zur Lösung vorzuziehen, weil die Steuerung des rechten oder linken Polyliea durch Programm gemacht würde.
auch die beiden separaten Programme einfacher und handhabbar im Vergleich zum einzigen Programm, länger und komplizierter.
das Problem der durch ein einzelnes Segment gebildeten Polylinie ist nicht, weil das Zitat einzigartig ist und sich nicht auf einen anderen Text überschneiden kann.
Ich lasse Sie wissen, ob die Gp-Lösung funktioniert.

Tschüss, wir kommen wieder.
 
Hi.
Ich möchte Ihnen für den Code so kompakt und voller Befehle gratulieren, die ich nicht kenne und von denen, für die Wahrheit nicht gut verstanden den Algorithmus der Lösung
Leider ergeben sich affektive Beweise in dem Sinne, dass der Code manchmal funktioniert, manchmal nicht, manchmal aus falschen Ergebnissen.
Wenn also etwas zwischen Ihnen und cofutatis besteht, geben wir es diesmal Confutatis (wir werden es nächstes Mal wieder tun).
dann, wie im Forum, müssen Sie etwas teilen, ich sende meine Arbeit in der qpoly2.lsp Datei
wenn Sie es nicht entsetzt betrachten, weil für Kürze ich zwei Programme hinzugefügt, so ist die Liste lang und repetitiv.
aber fragen Sie, warum es wichtig ist, dass es funktioniert.
für Benutzer Ich informiere Sie, dass ich die Funktion defun c nicht benutze:, aber ich bevorzuge es als Programm zu laden, das mit einem Knopf verbunden ist.
dann utlize (Last "qpoly2").
nach dem polylinearen Zitat stoppt das Progrmma und fragt nach Bestätigung. premento return komplettiert die Schreibposition mit der Neigung zum Vergnügen
(siehe Beispiel unten).
Wenn Sie n (nein) drücken, verschwinden die Zitate und die Polylinea vine riquota mit Text außen.
die Höhe des Textes ist 2 mm absolut, das mit dem Wert der variablen Dimscale multipliziert wird
dass stto ein Beispiel von Abschnitt 1/20 mit dem oberen Bügel mit dem hängenden Zitat in einem Warten von ok ist. rechts das rektifizierte Angebot
Hallo, nächstes
Staffa5.jpg
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
interessantes und anregendes Programm.
Ich habe gesehen, dass die Konformation der Klammern einer bestimmten Logik folgen muss, d.h. nach den Vertiken, müssen die Ecken der Polylinea immer weniger als 180 Grad sein. mit dieser Annahme folgte ich einer anderen Straße von der von gp gekreuzt und das ist die Kontrolle der Ecken der Klammer. Wenn alle Winkel größer als 180 Grad sind, nutze ich die Funktion der Umkehrung von Polylinea Vertices, die vor langer Zeit erstellt wurde. die neuesten Versionen von autocad Vorschau den speziellen Befehl invertiert, aber das Programm funktioniert auf allen Versionen. Auf diese Weise muss nicht mehr gefragt werden, ob die Texte gut sind oder nicht.
da das Programm den defunct hat und soweit die Schaltfläche hält, können Sie den String wie folgt ändern:
^c^c(falls (null c:qpoly3)(Last "qpoly3");qpoly3
 

Anhänge

Hi confutatis
aber wer sind Sie: die magische Lispe?
Du hast uns verarscht?
Vielen Dank für die Zeit, die Sie mir geben.
Aber ich habe das Programm versucht, aber es gibt mir folgenden Fehler
; fehler: keine funktionsdefinition: listkoordUnd doch ist die Funktion drinnen. werden die üblichen Klammern nicht an der richtigen Stelle sein

Ich bekenne, dass 1/3 der Anweisungen, die Sie benutzen, ich noch nie gesehen habe.
Aber wo haben Sie die Lispe an der Cambridge University studiert?
Kann ich das Programm bekommen, über das ich neugierig bin? .
Hallo und danke
 
zu Linie 70 fehlt die Klammern, die die princ...bah schließt, oder ich vergesse die vl-load-com oder die Klammern..
 
interessantes und anregendes Programm. .
quoto, auch weil ich die mögliche Verwendung vorhersagen.

Ich bleibe immer noch auf dem Konzept des internen/externen für die Neupositionierung der Texte, in der beigefügten Lisp sind diese wahr "quotes", dies hat seine Vorteile:
- die Orientierung von Texten entspricht immer dem Standard
- automatische Aktualisierung bei der Bügelung

für diesen letzten Aspekt Ich habe auch die automatische Aktualisierung der Länge des Poly vorhergesehen, indem Sie den Wert in eine Felddaten einfügen, aber mit der Verschiebung im Code von irgendeiner Pointevirgola können Sie einen einfachen Text verwenden.

in der Theorie sollte mit jeder Art von Quotenstil arbeiten, da die Werte angepasst werden, nur Aspekt: der Stil muss die Positionierung der Texte über oder unter der Quotenlinie vorhersagen.

Ich würde sagen, dass es eine "faste" Beta-Version ist, wie (für jetzt) wird die Operation durch Ziehen in Metern und Quoten in cm vorhergesehen.

Wir werden Entwicklungen sehen..

431.gif
 

Anhänge

In der Tat wird die Quote ohne Quotenlinien und Erweiterung Linien in allem und für alles gleich dem ursprünglichen Programm von betoniera, seltsam, dass nicht vorhergesehen die Verwendung von Quoten anstelle des Textes, vielleicht ist es seine Notwendigkeit,...
 

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