| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
| Webcast: PTC | Smart Services, ein Webinar am 13.12.2024
|
Autor
|
Thema: Eingabe einer Länge auch mit Mausklick (1086 / mal gelesen)
|
StephanD Mitglied Ingenieur
Beiträge: 126 Registriert: 10.01.2003 Modeling Version 20.1
|
erstellt am: 17. Feb. 2020 11:25 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich benötige für ein kleines Makro einen angeklickten Punkt auf einer Arbeitsebene und eine Länge als Variable. Das klappt auch, wenn ich die Länge von Hand eingebe. Schön wäre es jetzt, wenn ich die erste Variable auf der Ebene anklicke und dann eine Gummilinie erscheint, mit der Möglichkeit einen zweiten Punkt anzuklicken (die Länge wird dann als Differenz der beiden Punkte ermittelt) oder direkt eine Länge einzugeben. Im Prinzip genau das gleiche wie beim erstellen einer einfachen Linie auf einer Arbeitsebene. Auf die Variable bzw. Rückmelung mit dem Winkel könnte ich verzichten. Dieser Code funktioniert, nur dass die Bedienung nicht so komfortabel ist. Code:
:variables '( (Mittelpunkt :value-type :Point-2d ) (Laenge :value-type :Positive-length ) )
Einen Rückmeldung mit einer Gummilinie bekomme ich auch hin: (setq fback (sd-start-rubberline-feedback Mittelpunkt)) Dann muss ich aber den zweiten Punkt als Variable definieren und die Länge als Differenz der Punkte ausrechnen. Mit dieser Lösung kann ich aber nicht mehr die Länge direkt eingeben. Kennt dazu jemand eine elegante Lösung? Vielen Dank. Grüße Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 17. Feb. 2020 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für StephanD
Hallo Stephan, du kannst doch den zweiten Punkt ausssschließlich zum Berechnen der Länge nutzen und damit die dritte Variable optional ausfüllen. In etwa so: :variables '( (Mittelpunkt :value-type :Point-2d :next-variable 'Punkt_zwei ) (Punkt_zwei :value-type :Point-2d :toggle-type :invisible :after-input (progn (sd-set-variable-status 'Laenge :value (Berechnung der Länge P1-P2))) ) (Laenge :value-type :Positive-length ) ) So funzt das doch, oder verstehe ich dich Falsch? Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 17. Feb. 2020 18:59 <-- editieren / zitieren --> Unities abgeben: Nur für StephanD
Hi, es gibt ====>> Multiple Value Types Deine 2. Variable wäre also PUNKT und LÄNGE .. in digitaler Symbiose. Du musst dann nur in der Checkfunction aufpassen, oder auch bei :gui-value und natürlich im :after-input. Hier musst du immer beide Typen abfragen und entsprechend verzweigen. Etwas so: Code: (point_or_length : ... :after-input (if (numberp point_or_length) (pprint "kann so bleiben) ;; else (setq point_or_length (SD-VEC-LENGTH(sd-vec-subtract MittelPunkt point_or_length))) ) )
Nach aussen hin wäre point_or_length dann immer eine length. Wenn du einen schönen Beispiel Dialog machst, der nur die beiden Variablen enthält und etwas Ausgabe in der Console und co, mit start und end-feedback und anderem Gui-Schnickschnack und den hier veröffentlichst als "how-to-do-this-template" ... dann ... dann bekommst Du auch ein rotes Bienchen ins Heft gestempelt. ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StephanD Mitglied Ingenieur
Beiträge: 126 Registriert: 10.01.2003 Modeling Version 20.1
|
erstellt am: 18. Feb. 2020 11:34 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke das hat schon mal weiter geholfen. Das Ergebnis habe ich angehängt. Vielleicht reicht es ja schon für ein Bienchen. Luxus wäre jetzt noch eine Anzeige des Radius wie beim 2D-Copilot wenn man einen Kreis zeichnet. Über eventuelle Verbesserungen oder Korrekturhinweise in dem kurzen Programm bin ich natürlich auch dankbar. Grüße Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 23. Feb. 2020 22:21 <-- editieren / zitieren --> Unities abgeben: Nur für StephanD
|