| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Elemente mit einfach verwendetem Grenzpunkt VERTEX finden (386 / mal gelesen)
|
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 908 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Windows, Modeling 17-20.x Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 15. Dez. 2023 17:09 <-- editieren / zitieren --> Unities abgeben:
Grüß euch, Direct Drafting, ME10 kennt die Elemente (Linie, Bogen und Abrundung) die an einem oder beiden Enden nicht an mindestens ein anders Element angeschlossen sind. Die Standardfarbe dieser offenen Endpunkte ist grün, die der mehrfach verwendeten Grenzpunkte gelb. Sichtbar sind die wenn man auf SHOW VERTEX ON schaltet. Ich möchte gerne per Makro die Elemente finden, die zumindest ein offenes Ende haben. Warum? Wir haben geschlossene Konturen (Aluprofile), die wir als .dxf anderen Anwendungen zur Verfügung stellen müssen. Diese Geometrie darf nur aus den oben genannten Elementen (Linie, Bogen und Abrundung) bestehen, Farbe Weiß, Linienart Solid. Sonst nix. Die Kunden-Anwendungen kontrollieren die gelieferten Daten sehr gründlich und finden jede Abweichung, können sie aber nicht selber korrigieren. Jetzt kommt es leider vor, dass wir ab und zu "Hilfselemente" in die Zeichnungen einfügen um zB. Maße oder Winkelbemaßungen setzen zu können. Bleiben diese "Artefakte" nach dem Säubern der Zeichnung, die per Macro erfolgt, übrig verursachen sie Fehler. Der Benutzer wird zwar aufgefordert das Ergebnis der Säuberung zu kontrollieren und nach grünen Vertex zu suchen, aber da kommt der Faktor Mensch ins Spiel. Un- oder (Bequemlichkeit) -beabsichtigt Danke im Voraus und schönes Wochenende ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2138 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19045.3803 ● Drafting V17~V20.6.1 ● Modeling V17~V20.6.1 ● @Scirotec201804
|
erstellt am: 16. Dez. 2023 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für friedhelm at work
Zitat: Original erstellt von friedhelm at work: Direct Drafting, ME10 kennt die Elemente (Linie, Bogen und Abrundung) die an einem oder beiden Enden nicht an mindestens ein anders Element angeschlossen sind. ..... Ich möchte gerne per Makro die Elemente finden, die zumindest ein offenes Ende haben.
Es gibt !! im Annotation !! eine Funktion, die eine equidistante erzeugt. Die Läuft, beginnend bei einem angeklicktem Element einen Linienzug entlang. Wenn diese an einem Vertice EIN weiteres Element findet, läuft die weiter. Wenn 3+ oder 1 Elemente gefunden werden, hört der Automatismus auf und 'er' fragt interaktive nach Hilfe. .. Also so in etwa. Sie macht das natürlich genau anders herum, als Deine Frage indirekt fragt. Das ganze ist aber in den Quell-offenen Makros vom Annotation zu finden. Da kannst Du mal stöbern. Das ist auch so alt das dies im PE8 Installations Verzeichnis drin ist. --------------------------- Ansonsten: eigener Makro:
- Inq all Elements
- fülle eine Tabelle mit der Element ID und den Eckpunkten (inq 101) und (inq 102), also 2 (!) Zeilen pro Element
- Sortiere die Liste nach den Eckpunkten
- laufe durch die Liste und gucke ob ein Eckpunkt in der aktuellen UND vorherigen Zeile vorhanden ist, also identisch sind (siehe auch weiter unten)
- wenn in der Liste ein Eckpunkt nur EINMAL vorhanden ist, Schnapp dir diese Element-ID ==> FUND!
TIP: schreibe den Makro so, das er nicht (im ME10) interaktiv wird. Denn dann kannst Du den auch im Annotation einfach aufrufen. TIP: im Annotation gibt es nen Makro, der dir eine LTAB als HTML file hübsch aufbereitet. Der bekommt 2 Parameter.
Code: DEFINE Write_ltab_to_html PARAMETER Ltabname PARAMETER Filename
Der ist auch voll ME10 kompatible! Der sollte beim Schreiben Deines Makros hilfreich sein. So kannst du den Inhalt der Tabelle immer 'mit dem Auge' kontrollieren. Kannst den ja auch 3 mal aufrufen und 3 unterschiedliche HTML files erzeugen. Beim Vergleichen der Vertices tolerant sein: Also nicht P01==P02! Sondern Vektor Länge der Differenz < 0.001 oder so. ------------------ ● 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 |
Kotom-Eng Mitglied
Beiträge: 14 Registriert: 18.11.2022
|
erstellt am: 16. Dez. 2023 19:04 <-- editieren / zitieren --> Unities abgeben: Nur für friedhelm at work
Hallo friedhelm at work, Ich schlage dieses Makro vor, das die Linien, Bögen und Verrundungen, deren einer der Eckpunkte grün ist, rot einfärbt. Ist das was du willst? Hallo der_Wolfgang, Ich halte es nicht für sinnvoll, einen Vergleich mit einer Toleranz (z. B. < 0,001) anzustellen. Tatsächlich werden die Endpunkte eines Elements (Linie, Bogen, Text usw.) nicht mit dem Element gespeichert. Das Element enthält nur den Verweis auf einen Punkt. Ein Punkt, der zwei Elementen gemeinsam ist, wird nur einmal gespeichert und beide Elemente zeigen auf denselben Ort. Die INQ-Funktion gibt daher genau den gleichen Wert zurück. { Unconnected Elements } LET KE_uce_tab_name 'uce'
DEFINE KE_uce_search LOCAL Ctr LOCAL Nb_elt CREATE_LTAB 200 2 KE_uce_tab_name INQ_SELECTED_ELEM SELECT LINES ALL OR ARCS ALL OR FILLETS ALL CONFIRM LET Nb_elt ( INQ 14 ) LET Ctr 1 WHILE (Ctr <= Nb_elt) WRITE_LTAB KE_uce_tab_name Ctr 1 ( INQ 332 ) IF (( INQ 403 ) = LINE ) WRITE_LTAB KE_uce_tab_name Ctr 2 ( STR ( INQ 101 )) ELSE WRITE_LTAB KE_uce_tab_name Ctr 2 ( STR ( INQ 103 )) END_IF WRITE_LTAB KE_uce_tab_name (Nb_elt + Ctr) 1 ( INQ 332 ) WRITE_LTAB KE_uce_tab_name (Nb_elt + Ctr) 2 ( STR ( INQ 102 )) INQ_NEXT_ELEM LET Ctr (Ctr+1) END_WHILE LET Nb_elt ( LTAB_ROWS KE_uce_tab_name ) LET Ctr 1 WHILE (Ctr <= Nb_elt) SELECT_FROM_LTAB KE_uce_tab_name COLUMN 2 = ( READ_LTAB KE_uce_tab_name Ctr 2 ) END IF (( LTAB_ROWS 'sys_select') < 2 ) SHOW SELECT POINTER ( READ_LTAB KE_uce_tab_name Ctr 1 ) CONFIRM RED END_IF LET Ctr (Ctr+1) END_WHILE END_DEFINE
------------------
http://kotom.eng.free.fr/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2138 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19045.3803 ● Drafting V17~V20.6.1 ● Modeling V17~V20.6.1 ● @Scirotec201804
|
erstellt am: 17. Dez. 2023 20:09 <-- editieren / zitieren --> Unities abgeben: Nur für friedhelm at work
Zitat: Original erstellt von Kotom-Eng: .. Das Element enthält nur den Verweis auf einen Punkt. Ein Punkt, der zwei Elementen gemeinsam ist, wird nur einmal gespeichert und beide Elemente zeigen auf denselben Ort.
👍 Guter Punkt, das macht es wieder einfacher. Seit paar Jahren mache ich fast nix mit Makro Code mehr - bin da etwas eingerostet! KE_uce_search sieht schon mal gut aus!
Oh du machst einen N fachen Select in der Table.. hmmm.. Performance-technisch vielleicht doch auch machbar. Deswegen hatte ich die Idee nach den Eckpunkten zu sortieren und dann einmal durch die Spalte 2 zulaufen mit dem schnöden Points-Equal als check. Gucken wir mal wie es Friedhelm gefällt 😉 ------------------ ● 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 |
Kotom-Eng Mitglied
Beiträge: 14 Registriert: 18.11.2022
|
erstellt am: 19. Dez. 2023 18:10 <-- editieren / zitieren --> Unities abgeben: Nur für friedhelm at work
|
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 908 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Windows, Modeling 17-20.x Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 20. Dez. 2023 15:57 <-- editieren / zitieren --> Unities abgeben:
Hallo hat was gedauert, aber man hat schliesslich Urlaub und Zeit für nichts. >Gucken wir mal wie es Friedhelm gefällt. Sehr, sehr gut ! Bin begeistert ! Un très grand merci Gerald ! (Comment préfères-tu qu'on t'appelle, Kottom-eng ou Gerald ?) Jetzt aber wieder Deutsch. Hatte eigentlich gehofft, dass es eine Art INQ-Befehl geben würde der die offene bzw. geschlossenen Vertex finden kann. Das ist aber scheinbar nicht der Fall. Ich hätte auf die von der_Wolfgang beschriebene Weise weitergemacht. Ber statt dessen bekommen wir ein voll funktionierendes Macro dass die Aufgabe perfekt löst. Habe noch verschiede Anpassungen vorgenommen um es an unsere Bedürfnisse anzupassen. Zusätzlich ein Macro dass wir schon vorher verwendet haben. Es blendet alle Vertex ausser der Grünen aus. Da muss aber noch auf die eigene Hintergrundfarbe angepasst werden. Zum Probieren auch eine Profilgeometrie. Denke ich werde noch von euch hören. Wünsche schon hier frohe Weihnachten und einen guten Rutsch. ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kotom-Eng Mitglied
Beiträge: 14 Registriert: 18.11.2022
|
erstellt am: 21. Dez. 2023 18:45 <-- editieren / zitieren --> Unities abgeben: Nur für friedhelm at work
Es gibt eigentlich keine INQ-Funktion, mit der Sie feststellen können, ob ein Element einen verbundenen Scheitelpunkt hat oder nicht. Andererseits gibt es in Drafting intern ähnliche Algorithmen, auf die aber leider nicht zugegriffen werden kann. Zum Beispiel in MERGE, HATCH, AREA_PROPERTY, CLEAN_DRAWING. Ich bevorzuge den Namen Gerard, weil Kotom-Eng der Name meiner Firma ist. Schöne Ferien. ------------------
http://kotom.eng.free.fr/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|