| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Wieso 3D-Punkt? (2842 mal gelesen)
|
HolzfaellerS2 Mitglied Projektingenieur
Beiträge: 5 Registriert: 22.02.2011
|
erstellt am: 22. Feb. 2011 18:11 <-- editieren / zitieren --> Unities abgeben:
Hi @ll, ich bin nocht recht neu im Bereich Lispprogrammierung und hoffe Ihr könnt mihr helfen. Einige eurer Beiträge hat mir schon so manches graues Haar erspart und Anregungen gebracht. Ich arbeite mit BricsCad V11 (11.1.15 Build 20671) und bin ein wenig AutoCad verwöhnt. Daher war der Umstieg von AutoCad zu BricsCad "recht" hart. Da ich einige Funktionen unter BricsCad vermisste, wollte ich sie mittels Lisp wieder herholen. Doch das gestaltet sich schwieriger als gedacht und daher wende ich mich an euch. Ich hoffe Ihr könnt mir helfen. Doch nun zum eigentlichen Problem. Unter AutoCad war es möglich mittels 3 Punkten im Raum einen Kreis im aktuellen BKS zu erstellen. Bricscad akzeptiert hierbei nur 2D-Punkte. Daher die Überlegung mittels Lisp die Z-Koordinaten rauszustreichen. Jedoch sagt mir BricsCad : "Es wird ein 2D (kein 3D) Punkt erwartet. Bitte versuchen Sie es nocheinmal" wenn ich Punkte erfasse die nicht auf einer Ebene liegen. Das erscheint mir unlogisch (woher weis BricsCad das es mal ein 3D-Punkt war?) und ich komme daher nicht weiter. Meine Lips sieht wie folgt aus: (defun kreiss (/) (setq pkt1 (getpoint "\n Punkt 1 für Kreis anklicken ")) (setq x1 (car pkt1)) (setq y1 (cadr pkt1)) (setq z1 (caddr pkt1)) (setq pkt2 (getpoint "\n Punkt 2 für Kreis anklicken ")) (setq x2 (car pkt2)) (setq y2 (cadr pkt2)) (setq z2 (caddr pkt2)) (setq pkt3 (getpoint "\n Punkt 3 für Kreis anklicken ")) (setq x3 (car pkt3)) (setq y3 (cadr pkt3)) (setq z3 (caddr pkt3)) (setq pktk1 (list x1 y1 0)) ;Liste für den Pktk1 (setq pktk2 (list x2 y2 0)) ;Liste für den Pktk2 (setq pktk3 (list x3 y3 0)) ;Liste für den Pktk3 (command "_.circle" "3p" pktk1 pktk2 pktk3 ) ) Ich hoffe Ihr könnt mir helfen. Vielleicht hab ich auch einen Denkfehler... MfG HolzfaellerS2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 22. Feb. 2011 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
|
HolzfaellerS2 Mitglied Projektingenieur
Beiträge: 5 Registriert: 22.02.2011
|
erstellt am: 22. Feb. 2011 19:52 <-- editieren / zitieren --> Unities abgeben:
Hi CADmium, die Z-Koordinaten nicht mit abzurufen funktioniert leider nicht. Irgendwoher erkennt BricsCad das die Punkte nicht auf einer und derselben Ebene erfasst wurde. Aber bisher weiß ich nicht wie BricsCad das macht. MfG HolzfaellerS2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 23. Feb. 2011 07:40 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
Hallo Holzfäller, ich konnte das auch nachvollziehen, selbst wenn man per LISP den z-Wert nicht wegläßt, sondern durch den z-Wert des ersten Punktes ersetzt erscheint das gleiche Ergebenis. Ich habe das mal dem BRICSCAD-Support weitergegeben, vielleicht kommt ja von deren Seite ein Lösung. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HolzfaellerS2 Mitglied Projektingenieur
Beiträge: 5 Registriert: 22.02.2011
|
erstellt am: 23. Feb. 2011 08:46 <-- editieren / zitieren --> Unities abgeben:
Hi joern bosse, dankeschön, der Weg zum BricsCad-Support wäre die letzte Alternative gewesen. Hatte gehofft das es nur ein Denkfehler oder Einstellungssache ist. Mal schauen was da raus kommt. Danke nochmal. MfG HolzfaellerS2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 23. Feb. 2011 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
Hallo Holzfäller, mit folgendem LISP sollte es gehen. Der Unterschied zu CADmium's ist, daß nur der erste Punkt eine 3D-Koordinate enthält, der 2. und 3. enthalten lediglich eine 2D-Koordinate. Code:
(defun C:C3P2D ( / PKT1 PKT2 PKT3) (if (and (setq pkt1 (getpoint "\nErsten Punkt eingeben:")) (setq pkt2 (getpoint "\nZweiten Punkt eingeben:")) (setq pkt3 (getpoint "\nDritten Punkt eingeben:")) ) (command "_Circle" "_3p" pkt1 (list (car pkt2) (cadr pkt2)) (list (car pkt3) (cadr pkt3)) ) ) )
Leider habe ich bei mir immer noch eine Zeichnung, in der es nicht funzt (bei Thorsten Moses von BRICSCAD geht es aber mit exakt derselben Zeichnung ) Ich habe jetzt die aktuelle Version 11.2.9 runtergeladen, hilft aber nichts. Probier einfach mal aus und laß hören, ob es bei Dir funktioniert. Nachtrag: In der Zeichnung von mir lag es daran, daß ich mich in der Draufsicht befunden habe. In einer perspektivischen Ansicht hat es funktioniert. ------------------ viele Grüße Jörn http://www.bosse-engineering.com [Diese Nachricht wurde von joern bosse am 23. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HolzfaellerS2 Mitglied Projektingenieur
Beiträge: 5 Registriert: 22.02.2011
|
erstellt am: 24. Feb. 2011 15:33 <-- editieren / zitieren --> Unities abgeben:
Hallo joern bosse, leider verursacht es den selben Fehler. Sobald die Punkte von unterschiedlichen Ebenen kommen, akzeptiert er sie nicht. Schade. Aber wenn Du nix dagegen hast, würd ich deinen Code übernehmen (sieht besser aus). MfG HolzfaellerS2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 25. Feb. 2011 07:21 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
|
Gerd_Ecke Mitglied Bergbauingenieur
Beiträge: 146 Registriert: 28.08.2002 Civil 3D 2024, GeoCAD BricsCAD 23
|
erstellt am: 07. Mrz. 2011 21:41 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
Ich glaube ihr habt da nen denkfehler ! Bei der Eingabe des ersten Punktes spielt es keine Rolle ob 3D oder 2D Punkt. Der 2. und 3. müssen 2D Punkte sein ! Wie erzeuge ich auf einer 2D Oberfläche einen 3D Punkt ?? RICHTIG OFANG weil : ohne OFANG ist ein punkt den ich mit der Maus anklicke ein 2D Punkt. Wenn ich also über Ofang einen Punkt wähle, aus diesem Punkt die Z-koordinate entferne habe ich einen 2D Punkt == OK Wenn ich aber beim Kreiserzeugen den OFANG nicht ausschalte fängt die Funktion wieder einen 3D Punkt... !! Vor dem Aufruf command _circle den OFANG ausschalten . Funktion läuft bei mir unter BricsCAD 10 und ACAD Civil 2011...ohne Fehlermeldung
Code: (defun kreiss (/) (setq pkt1 (getpoint "\n Punkt 1 für Kreis anklicken ")) (setq x1 (car pkt1)) (setq y1 (cadr pkt1))(setq pkt2 (getpoint "\n Punkt 2 für Kreis anklicken ")) (setq x2 (car pkt2)) (setq y2 (cadr pkt2)) (setq pkt3 (getpoint "\n Punkt 3 für Kreis anklicken ")) (setq x3 (car pkt3)) (setq y3 (cadr pkt3)) (setq pktk1 (list x1 y1 )) ;Liste für den Pktk1 (setq pktk2 (list x2 y2 )) ;Liste für den Pktk2 (setq pktk3 (list x3 y3 )) ;Liste für den Pktk3 (command "-Ofang" "Aus") (command "_.circle" "3p" pktk1 pktk2 pktk3 ) (command "-Ofang" "Ein") )
[Diese Nachricht wurde von Gerd_Ecke am 08. Mrz. 2011 editiert.] [Diese Nachricht wurde von Gerd_Ecke am 08. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 08. Mrz. 2011 07:38 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
Hallo Gerd, ich glaube nicht, daß es eine Alternative ist, den Objektfang auszuschalten, wie soll man dann noch exakt zeichnen. Hier noch ein Lisp, das einen Kreis über 3 Punkte erzeugt, wobei die Höhe des Kreises der Höhe des ersten gepickten Punktes entspricht. Weil das Lisp nicht mit dem Command-Aufruf "_Circle" arbeitet kann das Problem mit diesem Command-Aufruf unter BRICSCAD umgangen werden.
Code:
(defun C:C3P ( / PKT1 PKT2 PKT3 obj1 obj23 obj3) (if (and (setq pkt1 (getpoint "\nErsten Punkt eingeben:")) (setq pkt2 (getpoint "\nZweiten Punkt eingeben:")) (setq pkt3 (getpoint "\nDritten Punkt eingeben:")) ) ;;;Mittelpunkt berechnen (progn (setq hpkt1 (caddr pkt1) pkt1 (C3P:Pkt2D pkt1) pkt2 (C3P:Pkt2D pkt2) pkt3 (C3P:Pkt2D pkt3)) (if (setq mp(inters (setq Fp1(mapcar '(lambda(A)(/ A 2.0))(mapcar '+ pkt1 pkt2))) (polar Fp1 (+(angle pkt1 pkt2)(/ pi 2.0))10.0) (setq Fp2(mapcar '(lambda(A)(/ A 2.0))(mapcar '+ pkt2 pkt3))) (polar Fp2 (+(angle pkt2 pkt3)(/ pi 2.0))10.0) nil)) (entmake (list '(0 . "CIRCLE") (cons 10 (reverse(cons hpkt1 (cdr(reverse mp))))) (cons 40 (distance pkt1 mp))))))))(defun C3P:Pkt2D (pkt / ) (reverse(cons 0.0(cdr(reverse pkt)))))
Von BRICSCAD habe ich noch keine Rückmeldung bezüglich des Problems. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gerd_Ecke Mitglied Bergbauingenieur
Beiträge: 146 Registriert: 28.08.2002 Civil 3D 2024, GeoCAD BricsCAD 23
|
erstellt am: 08. Mrz. 2011 11:34 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
Hallo Joern, es ging doch nicht darum den Ofang generell auszuschalten sondern nur für die einzelne Command. Wenn man den Objektfang einschaltet darf man sich nicht wundern wenn ein Objekt gefangen wird. Gruß Gerd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 08. Mrz. 2011 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
Hallo Gerd, aber ich habe z.B. 3 Linienendpunkte mit unterschiedlicher Höhe, aus denen ich einen Kreise über 3 Punkte zeichen möchte. Und genau dann muß man den Objektfang für alle 3 Linienendpunkte verwenden, aber genau daß führt aufgrund der unterschiedlichen Höhen dann zum Fehler in BRICSCAD. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gerd_Ecke Mitglied Bergbauingenieur
Beiträge: 146 Registriert: 28.08.2002 Civil 3D 2024, GeoCAD BricsCAD 23
|
erstellt am: 08. Mrz. 2011 13:24 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 08. Mrz. 2011 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für HolzfaellerS2
|
HolzfaellerS2 Mitglied Projektingenieur
Beiträge: 5 Registriert: 22.02.2011
|
erstellt am: 09. Mrz. 2011 14:47 <-- editieren / zitieren --> Unities abgeben:
Hi Gerd_Ecke & Joern Bosse, erstmal danke für eure Mühe. Die Lisp von Gerd funktioniert auch bei mir. Das von Joern leider nicht. Der Kreis wird irgendwo im Raum erzeugt. Das der Ofang ausgeschaltet werden muss, auf sowas wäre ich nie gekommen. THX euch beiden. Würde dann beide Lisp übernehmen/als Quelle für weitere Programme nehmen. MfG HolzfaellerS2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |