Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Block an einer Kante absetzen mit OFang möglich ?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Block an einer Kante absetzen mit OFang möglich ? (548 mal gelesen)
Juergen55
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Ulf Böger an!   Senden Sie eine Private Message an Ulf Böger  Schreiben Sie einen Gästebucheintrag für Ulf Böger

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

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.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

Servus

Soweit ich im Überfliegen Deines Codes gesehen hab, müßten auch die Befehle MESSEN und TEILEN für Dich brauchbar sein.

------------------
Gruß, Ernst

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 28. Sep. 2004 08:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 28. Sep. 2004 12:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 28. Sep. 2004 13:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 28. Sep. 2004 13:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 28. Sep. 2004 13:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 28. Sep. 2004 14:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Juergen55 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Juergen55 an!   Senden Sie eine Private Message an Juergen55  Schreiben Sie einen Gästebucheintrag für Juergen55

Beiträge: 282
Registriert: 08.03.2001

erstellt am: 28. Sep. 2004 19:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Fuchsi,

Danke für die sehr ausführliche Antwort !

Gruß, Jürgen

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz