Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Probleme mit TRANS

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:  Probleme mit TRANS (3572 mal gelesen)
joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Mrz. 2011 20:08    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


Trans0-obj.dwg.txt

 
Hallo,
ich weiß noch nicht ob ich grundlegend was falsch mache oder nur den Wald vor lauter Bäumen nicht sehe:

Ich möchte von einem Block bestimmt Koordinaten im Blocksystem erhalten, beispielhaft habe ich einen Block definiert, der aus einem Kreis und 2 Linien besteht. Die Linienendpunkte möchte ich im Block Koordinatensystem haben. Die Längen sind jeweils 20m, so daß im Uhrzeigersinn bei 12 beginnend folgende Koordinaten heraus kommen:
0,10 / 10,0 / 0,-10 / -10,0

Jetzt das Problem mit TRANS im WKS:

Code:

(defun c:test ( / )
(setq obj (car (entsel "\nBlock wählen:")))
(setq koord (getpoint "\nLinienendpunkt:"))
(trans koord 0 obj))

Bei dem TRANS-Aufruf kommt aber die Koordinate im WKS raus, was mache ich das falsch??

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 23. Mrz. 2011 20:35    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 joern bosse 10 Unities + Antwort hilfreich

So transformierst du nur ins BKS der Blockreferenz (im Beispiel ist BKS=WKS) und nicht etwa in das Koordinatensystem der Blockdefinition.
Die Transformation musst du die selbst ausrechnen (gepickter Punkt minus Blockeinfügepunkt), ggf. noch Drehung und bei Bedarf Skalierung zurückrechnen.

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 24. Mrz. 2011 06:46    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 Udo,
schade, dann habe ich das wohl falsch verstanden. Ok. den Punkt auf der Ebene zu berechnen (wie in meinem einfachen Beispiel gezeigt) kein Problem, was ist aber, wenn der Block noch zusäzlich in allen Richtungen gedreht ist, dann habe ich den Normalenvektor als Hinweis (GC 210) => in dem Fall dann ungleich (0.0 0.0 1.0)
Gibt es irgendwo ein Beispiel, wie man mit den Werten des Normalenvektors die Transformation rechnen kann?

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 24. Mrz. 2011 07: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 Nur für joern bosse 10 Unities + Antwort hilfreich

Wenn ich es richtig versstanden habe, soll deine Funktion so funktionieren:
(defun c:test ( / )
(command "_ucs" "_world")
(setq obj (car (entsel "\nBlock wählen:")))
(setq koord (getpoint "\nLinienendpunkt:"))
(command "_ucs" "_object" obj)
(print (trans koord 0 1))
(command "_ucs" "_world")

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 24. Mrz. 2011 07:43    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 Udo,
vom Prinzip ja, aber die Commandbefehle machen mir performance-mäßig unter ACAD2011 alles kaputt.
Daher möchte ich weg von den Commands, auch wenn die natürlich erstmal schön bequem sind.
Hast Du das auch schon nachvollziehen können, daß es sich unter ACAD2011 mit den Commands gar nicht mehr so richtig arbeiten läßt?

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 24. Mrz. 2011 10:57    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, ich schon wieder,
ich komme noch nicht so recht weiter:
ich möchte jetzt die Command-Variante BKS von Objekt ersetzen:

Ich habe einen Block gedreht im Raum:
(50 . 0.0)(210 0.57735 -0.57735 0.57735)

Um ein BKS mit Entmake zu Definieren brauche ich den GC11 (X-Achsenrichtung) und den GC12 (Y-Achsenrichtung)

mit folgender Funktion von Robert McNeel & Associates erhalte ich aus dem Normalenvektor des Blockes den GC 11: => (0.707107 0.707107 0.0)

Code:

(defun ArbAxis(v) (if
    (and (< (abs (car v)) 0.015625)
(< (abs (cadr v)) 0.015625))
         (VectorUnitize (VectorCrossProduct '(0.0 1.0 0.0) v))
(VectorUnitize (VectorCrossProduct '(0.0 0.0 1.0) v)) ) )

(defun VectorCrossProduct(v1 v2)
  (list (- (* (cadr v1) (caddr v2)) (* (cadr v2) (caddr v1)))
(- (* (caddr v1) (car v2)) (* (caddr v2) (car v1)))
(- (* (car v1) (cadr v2)) (* (car v2) (cadr v1)))))

(defun VectorUnitize(v / dist) (setq dist (VectorLength v))
  (if (> dist 0.0) (list (/ (car v) dist) (/ (cadr v) dist)
(/ (caddr v) dist)) v ) )

(defun VectorLength(v / dist)
  (setq dist (+ (* (car v) (car v)) (* (cadr v)
       (cadr v))
(* (caddr v) (caddr v))))
  (if (> dist 0.0) (sqrt dist) 0.0 ))


Wie berechne ich jetzt aber die noch fehlende Y-Achsenrichtung GC12??

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

[Diese Nachricht wurde von joern bosse am 24. Mrz. 2011 editiert.]

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 24. Mrz. 2011 18:41    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, ich schon wieder,
so, das mit der Y-Richtung hat sich erledigt, das war nur das Kreuzprodukt zwischen dem Normalenvektor und der X-Richtung.
http://www-lehre.inf.uos.de/~cg/2008/PDF/kap-12.pdf

Viele Grüße
Jörn
http://www.bosse-engineering.com

[Diese Nachricht wurde von joern bosse am 24. Mrz. 2011 editiert.]

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 24. Mrz. 2011 21: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

Einmal heute noch,
kann ich ein Userkoordinatensystem ohne Namen erstellen?
Wenn ich die mit Namen erstelle, dann muss ich im Schleifenablauf das vorher erstellte immer wieder löschen und dann wieder ein neues erstellen, und das geht stark an die Performance (unten links erscheint ständig der ACAD-Fortschrittsbalken (sucht in Zeichnung).

Anders nochmal gefragt, die Variable USCORG, UCSXDIR und UCSYDIR sind schreibgeschützt, stellen aber das aktuelle Koordinatensystem dar. Aber dann ist das UCS ja nicht mit Namen gespeichert, und genau das brauch ich.

Bin wie immer dankbar für jeden Tip

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

Map 2015 x64
Win7 x64
12 GB RAM
ADN
OpenDCL

erstellt am: 19. Apr. 2011 20:14    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 joern bosse 10 Unities + Antwort hilfreich

Hallo, auch wenn dieses Topic etwas älter ist, will ich noch schnell sagen, dass es mir bisher nicht gelungen ist ein BKS ohne Namen zu erstellen - auch nicht via ActiveX. Du könntest allenfalls versuchen ein anonymes BKS zu erstellen - vglbar mit anonymen Blöcken. Aber das habe ich noch nicht versucht. Du musst wohl oder übel einen Namen vergeben.

VG, Fred

------------------
Fred Tomke
Dipl.-Ing. (FH) Landespflege

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 20. Apr. 2011 07:35    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 Fred,
nachdem dieser Thread in einen Monolog ausgeartet ist finde ich es schön, doch noch eine Antwort zu bekommen.
Ich habe es jetzt auch so gelöst, daß ich einen Namen vergeben habe. Ist aber letztendlich nicht wirklich schlimm, denn ich kann mit demselben Namen immer wieder ein neues BKS erstellen, am Ende des Programms wird es dann gelöscht.

Als Ergebnis habe ich eine Funktion, die mir das BKS von Objekt für Blöcke erstellt, leider erst in 2D.

Code:


(defun c:test ( / OBJ P W)
  (setq obj(car(entsel "\nBitte Block auswählen:")))
  (setq w (cdr(assoc 50 (entget obj)))
        p (cdr(assoc 10 (entget obj))))

  (JB_test:Ucs:Set w p))

;;;BKS erstellen
(defun JB_test:Ucs:Set (w p / ucs)
  (setq ucs
        (vla-add (vla-get-usercoordinatesystems
                    (vla-get-activedocument(vlax-get-acad-object)))
          (vlax-make-variant(JB_test oint->variant
                              '(0.0 0.0 0.0)))
          (vlax-make-variant(JB_test oint->variant
                              (list (cos w)(sin w) 0.0)))
          (vlax-make-variant(JB_test oint->variant
                              (list(* -1.0(sin w))(cos w)0.0)))
          "TEST"))
  (vla-put-Origin ucs (JB_test oint->variant p))
  (vla-put-activeucs (vla-get-activedocument
                      (vlax-get-acad-object))
    ucs))

;;;Tripelliste -> Variant
(defun JB_test oint->variant (liste / point)
(setq point (vlax-make-safearray vlax-vbDouble '(0 . 2)))
  (vlax-safearray-put-element point 0 (car liste))
  (vlax-safearray-put-element point 1 (cadr liste))
  (vlax-safearray-put-element point 2
    (if (caddr liste)(caddr liste)0.0))
  point)


Wenn ich jetzt sowieso gerade wieder dabei bin kann ich meine ursprüngliche Frage wieder auffrischen, kann mir einer Beispielhaft zeigen, wie ich das für den Fall mache, wenn der Block um alle Achsen verdreht ist? Mein jetziges Beispiel geht nur für den Fall, das die Normale des Blockes (0.0 0.0 1.0) ist.
CADmium hatte mir bereits einen Link geschickt, aber damit bin ich leider nicht so ganz klar gekommen.
http://lee-mac.com/matrixtransformationfunctions.html

Nachtrag: Die Smilies im Code z.B. durch [Doppelpunkt und "P"] ersetzen.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

[Diese Nachricht wurde von joern bosse am 20. Apr. 2011 editiert.]

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

Map 2015 x64
Win7 x64
12 GB RAM
ADN
OpenDCL

erstellt am: 20. Apr. 2011 09:37    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 joern bosse 10 Unities + Antwort hilfreich

Hallo Jörn,

Deine Funktion Point->variant verstehe ich nicht: Was spricht gegen(vlax-3d-point '(0 0 0)) ?

Wenn Du das BKS von einem Block aktiv stellen möchtest, warum machst Du dann nicht einfach (command "_ucs" "_obj" entBlockRef)?

Nur damit ich es richtig verstehe: Du willst (gemäß Deinem obigen Beispiel) die Linienendpunkte der Blockdefinition basierend auf den Blockreferenzen incl. Drehung und Skalierung haben?

VG, Fred

------------------
Fred Tomke
Dipl.-Ing. (FH) Landespflege

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

Map 2015 x64
Win7 x64
12 GB RAM
ADN
OpenDCL

erstellt am: 20. Apr. 2011 10:25    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 joern bosse 10 Unities + Antwort hilfreich

Hallo, Jörn,

für den Fall, dass Du die Linienendpunkte der Blockdefinition basierend auf den Blockreferenzen incl. Drehung und Skalierung haben willst, wäre das der erste Teil des Auslesens der Punkte unter Anwendung der Beispiele aus dem von Dir angegebenen Link.

Code:
(defun c:test (/ lstPoints entBlock lstEnt ptBase reaAngle vecNormal vecVector matScale matRotation)
  (setq lstPoints (list (list 0 10 0)
(list 10 0 0)
(list 0 -10 0)
(list -10 0 0)))
 
  (setq entBlock (car (entsel)))
  (setq lstEnt (entget entBlock))
  (setq ptBase (cdr (assoc 10 lstEnt)))
  (setq reaAngle (cdr (assoc 50 lstEnt)))
  (setq vecNormal (cdr (assoc 210 lstEnt)))

  ;; Punkte zum Einfügepunkt des Blocks (WKS) verschieben
  (setq ptBase (trans ptBase entBlock 0))
  (setq lstPoints (mapcar '(lambda (ptPoint) (mapcar '+ ptPoint ptBase)) lstPoints))

  ;; Punkte skalieren (entsprechend der ungleichmäßigen Blockskalierung)
  (setq matScale (list (list (cdr (assoc 41 lstEnt)) 0.0 0.0)
      (list 0.0 (cdr (assoc 42 lstEnt)) 0.0)
      (list 0.0 0.0 (cdr (assoc 43 lstEnt)))))
  (setq vecVector (mapcar '- ptBase (mxv matScale ptBase)))
  (setq lstPoints (mapcar '(lambda (ptPoint) (mapcar '+ (mxv matScale ptPoint) vecVector)) lstPoints))

  ;; Punkte drehen
  (setq matRotation (list (list (cos reaAngle) (- (sin reaAngle)) 0.0)
  (list (sin reaAngle) (cos reaAngle) 0.0)
  (list 0.0 0.0 1.0)))
  (setq vecVector (mapcar '- ptBase (mxv matRotation ptBase)))
  (setq lstPoints (mapcar '(lambda (ptPoint) (mapcar '+ (mxv matRotation ptPoint) vecVector)) lstPoints))

  lstPoints
 
); test


(defun mxv ( matMatrix vecVector )
  (mapcar '(lambda ( r ) (apply '+ (mapcar '* r vecVector))) matMatrix)
)


Als nächstes müsstest Du den Abzissenvektor der x-y-Ebene zum Normalenvektor ermitteln und dann könntest Du mit 3D-Drehung die Punkte auf die x-y-Ebene hieven.

Zum Thema 3D-Drehung habe ich hier etwas gefunden: http://www.theswamp.org/index.php?topic=37319.msg423620#msg423620

VG, Fred

------------------
Fred Tomke
Dipl.-Ing. (FH) Landespflege

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 20. Apr. 2011 17:22    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


110420_BKSvonObjekt4CADde.dwg.txt

 
Hallo Fred,
Zitat:
Was spricht gegen(vlax-3d-point '(0 0 0)) ?

Kannte ich noch nicht, werde ich jetzt verwenden.
Zitat:
warum machst Du dann nicht einfach (command "_ucs" "_obj" entBlockRef)?

Das ist mein ursprüngliches Problem, daß dauert unter AutoCAD 2011 einfach zu lange.

Ich habe ja vohin schon mit Fred telefoniert, scheinbar ist mein Anliegen nicht ganz deutlich angekommen, ich probiere es nochmal:

Ich möchte den Command-Befehl "BKS von Objekt" nachbauen und für einen Block, der in allen Achsen gedreht sein kann, verwenden.

Dafür habe ich folgende Daten zur Verfügung (siehe anhängende Beispielzeichnung):
(50 . 1.40088);;;Drehung des Blockes
(210 -0.707107 -0.5 0.5);;;Normalenvektor des Blockes

Als Ergebnis muss ich die Normalenvektoren für X und Y erhalten:
UCSXDIR          0.5000,0.1464,0.8536
UCSYDIR          -0.5000,0.8536,0.1464

In der Zeichnung habe ich die blockbezogenen Normalenvektoren jeweils als Linie dargestellt:
rot = X, grün = Y, blau = Z.

Ich bin fest davon überzeugt, daß es möglich sein muss aus den Ausgangsdaten die X- und Y-Vektoren zu berechnen, leider nützt meine Überzeugung gar nichts wenn ich das mathematisch nicht auf Reihe bekomme   Gibt es nicht irgendeinen unter Euch der dort weiter weiß??

Bin wie immer dankbar für jeden Tip

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

neurosis
Mitglied
dipl.ing.


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

Beiträge: 222
Registriert: 22.08.2006

erstellt am: 21. Apr. 2011 15: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 joern bosse 10 Unities + Antwort hilfreich

hallo joern,
isses das hier

ang ... winkel des blocks (50 . 1.40088)
nv ... normalenvektor des blocks (210 -0.707107 -0.5 0.5)

ucsxdir:

Code:
(trans (polar '(0 0 0) ang 1.0) nv '(0 0 1))

ucsydir:

Code:
(trans (polar '(0 0 0) (+ ang (/ pi 2.0)) 1.0) nv '(0 0 1))

gruss
marco

------------------
Marco Heuer
www.arc-aachen.de
Airport Office

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 21. Apr. 2011 15:57    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 Marco,
ich glaube es nicht, das scheint es zu sein, so richtig begriffen habe ich es aber noch nicht. Ich werde nach Ostern mich nochmal detaillierter melden, ich muss gleich los. Vielen Dank und frohe Ostern.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 26. Apr. 2011 08:15    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 Marco,
es hat "Klick" gemacht.,Ich habe eben nochmal die Hilfe für den TRANS-Befehl ein wenig genauer studiert. Die Möglichkeit, 3D-Vektoren als Argumente für FROM und TO zu verwenden hatte ich bisher scheinbar immer überlesen.
Also, vielen Dank, es funzt.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

[Diese Nachricht wurde von joern bosse am 26. Apr. 2011 editiert.]

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