| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Block an einer Kante absetzen mit OFang möglich ? (559 mal gelesen)
|
Juergen55 Mitglied Elektrotechniker
Beiträge: 282 Registriert: 08.03.2001 Microstation V8i, TriCAD, AutoCAD2014, EPlan P8 2.2, Core I5, 16GB Arbeitsspeicher
|
erstellt am: 27. Sep. 2004 20:44 <-- editieren / zitieren --> Unities abgeben:
Hallo, folgende kleine Routine benutze ich zum einfügen von Blöcken, um diese ausgerichtet an einer Kante abzusetzen. Dies funktioniert im Prinzip auch, aber wenn ich den Absetzpunkt mit OFang wähle, wird mir der Block immer leicht versetzt zur eigentlich gewählten Kante ! Wo liegt der Fehler in meiner Routine ? Seltsamerweise klappt es wunderbar wenn der OFang ausgeschaltet wird, wie kommt das, kann es sein das ACAD-Befehle die aus Lisp heraus aufgerufen werden nicht mehr korrekt funktionieren ? Wenn man ganz nah heranzoomt gehts auch mit OFang schon komisch ! (defun c:EF ()
(setq ff1 500.0) (setq ff2 250.0) (setq ff3 100.0) (setq p1 (getpoint "\nAbsetzpunkt zeigen: ")) (setq ang (getangle p1 "\nSymbolrichtung zeigen:")) (setq deg (atof (angtos ang 0 8))) (setq x1 (car p1)) ;X-Koordinate von Punkt wird gewählt (setq y1 (cadr p1)) ;Y-Koordinate von Punkt wird gewählt (setq z1 (caddr p1)) ;Z-Koordinate von Punkt wird gewählt (setq x11 (+ x1 (/ ff1 2.0))) ; Berechnung Punkt1 (setq y11 (- y1 (/ ff2 2.0))) (setq p11 (list x11 y11 z1)) (command "_insert" "WD" "X" ff1 "Y" ff2 "Z" ff3 p11 "") (command "_rotate" (entlast) "" p1 deg) ) Gruß Jürgen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulf Böger Mitglied
Beiträge: 281 Registriert: 18.09.2002 IBM R50p 1.7GHz 1GB RAM ATI Mobility Fire GL T2 128 MB Win2000 SP3 AutoCAD Mechanical 2004 DX Inventor 8 SP1 ADT 2004 PartSolutions 8
|
erstellt am: 28. Sep. 2004 07:36 <-- editieren / zitieren --> Unities abgeben: Nur für Juergen55
Der Fehler liegt wahrscheinlich nicht in deiner Routine. Schau dir mal genau an, welche Punkt gefangen wird. Mit welcher Fangoption arbeitest du! In deiner Routine setzt du keinen Ofang - warum nicht? Nur so gehst du sicher! ------------------ Nur Döner macht schöner und wenn du ihn nicht isst, bleibst du wie du bist! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 28. Sep. 2004 08:05 <-- editieren / zitieren --> Unities abgeben: Nur für Juergen55
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 28. Sep. 2004 08:24 <-- editieren / zitieren --> Unities abgeben: Nur für Juergen55
bei Lisp-Befehlen (command .... wird genauso der Objektfang verwendet, als wenn du den autocad-befehl manuell verwendest. also muss ein (command "_rotate" (entlast) "" p1 deg) nicht unbedingt (entlast) genau um p1 gedreht werden , sondern um den Punkt den der eingestellte Objetfang bei p12 findet. Genauso natürlich auch beim (command "_insert" ...) Das erklärt auch warum es beim Reinzoomen besser funktioniert, da das Objektfangkästchen ja immer gleich groß ist. Hast du einen großen Zoomefaktor wird er vielleicht mehrer näher liegende Objekte darin finden, und etprechend auswerten. Zoomst du dich mehr rein, ist das Objektfangkästchen leer, und damit der Objektfang unwirksam. also immer VORHER mit (setq OldOsmode (getvar "OSMODE")) (setvar "OSMODE" 0) den aktuellen Objektfang ausschalten und sichern
und NACHHER (setvar "OSMODE" OldOsmode) wieder zurücksetzten ------------------ WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Juergen55 Mitglied Elektrotechniker
Beiträge: 282 Registriert: 08.03.2001
|
erstellt am: 28. Sep. 2004 12:34 <-- editieren / zitieren --> Unities abgeben:
Hallo, Danke für die Antworten, möglicherweise habt Ihr mich nicht ganz verstanden, es ist so ich benutze ja den OFang aber an dem gewählten Punkt der gelb makierte ist, setzt er mir das Objekt nicht ab sondern leicht versetzt ? Vielleicht könnte das mal jemand testen ! Gruß, Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 28. Sep. 2004 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Juergen55
Zitat: Original erstellt von Juergen55: .. wird mir der Block immer leicht versetzt zur eigentlich gewählten Kante !
.. glaub ich nicht, dass es am OFANG liegt!... eher an der Berechnung deines Einfügepunktes! Teste mal : (defun c:EF () (if (and(setq p1 (getpoint "\nAbsetzpunkt zeigen: ")) (setq ang (getangle p1 "\nSymbolrichtung zeigen:")) (tblsearch "BLOCK" "WD") ) (progn (setq deg (atof (angtos ang 0 8))) (setq ff1 5.0) (setq ff2 2.5) (setq ff3 1.0) (command "_insert" "WD" "X" ff1 "Y" ff2 "Z" ff3 p1 "") (command "_rotate" (entlast) "" p1 deg) ) ) ) und dann beschreib mal wozu du scalest und dann den Einfügepunkt berechnen willst? ------------------ - Thomas - "Bei 99% aller Problemen ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
[Diese Nachricht wurde von CADmium am 28. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 28. Sep. 2004 13:05 <-- editieren / zitieren --> Unities abgeben: Nur für Juergen55
meinst du er setzt das Objekt nicht an den mit der zeile (setq p1 (getpoint "\nAbsetzpunkt zeigen: ")) gewählten Punkt nicht ab ??? wäre ja aber auch klar , denn du fügst das teil "WD" ja auf P11 ein, und P11 ist um 250 einheiten nach rechts und 125 einheiten nach unten versetzt. das hat aber nichts mit dem ofang zu tun. weiter drehst du den block dann über P1 und nicht dem einfügepunkt P11 -> das resultat ist dann irgendwas !!
------------------ WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Juergen55 Mitglied Elektrotechniker
Beiträge: 282 Registriert: 08.03.2001
|
erstellt am: 28. Sep. 2004 13:24 <-- editieren / zitieren --> Unities abgeben:
Hallo, Es liegt an der Systemvariablen Osnapcoord stand bei mir auf 2 wenn die auf 1 steht klappts wunderbar ! Beim Forum industrie24.com wusste das Jogi. Trotzdem Danke für die vielen Antworten ! Gruß, Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 28. Sep. 2004 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für Juergen55
nun ja , das ist ja fast das gleiche ! osnapcoord = 2 : koordinaten per tastatur haben AUSSER bei scripen (über (command) geschossen) vorrang vor dem Objektfang osnapcoord = 1 : koordinaten per tastatur haben immer vorrang vor dem Objektfang osnapcoord = 0 : Objektfang hat immer vorrang !!! ob du das jetzt so löst : (setq OldOsnapCoord (getvar "OSNAPCOORD")) (setvar "OSNAPCOORD" 1) (command "_insert" "WD" "X" ff1 "Y" ff2 "Z" ff3 p11 "") (command "_rotate" (entlast) "" p1 deg) (setvar "OSNAPCOORD" OldOsnapCoord) oder so wie ich es vorgeschlagen habe, den objetfang temporär auszuschalten (setq OldOmode (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_insert" "WD" "X" ff1 "Y" ff2 "Z" ff3 p11 "") (command "_rotate" (entlast) "" p1 deg) (setvar "OSMODE" OldOsmode) ist eigentlich egal. wenn du in einem lispprogramm, gewisse einstellungen von systemvariablen vorraussetzt, würde ich die immer im LISP setzten, und abschliessend wieder auf den originalwert zurücksetzten. dadurch ist gewährleistet, dass durch dein programm ein anderes in der funktion nicht eingeschränkt wird. vielleicht braucht ja ein anderes lisp die einstellung osnapcoord=2 ???? ------------------ WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Juergen55 Mitglied Elektrotechniker
Beiträge: 282 Registriert: 08.03.2001
|
erstellt am: 28. Sep. 2004 19:27 <-- editieren / zitieren --> Unities abgeben:
|