• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Trouble Transkription mit Info Extraktion

ingoenius

Guest
Hallo alle Ich habe eine Datei lisp, die ich in Textdatei die Koordinaten Ort und Skalen Block Name extrahieren muss
im Allgemeinen funktioniert es, aber ich habe das Problem, die Rotationen der Blöcke korrekt zu verfolgen, wenn der Block und auf mehreren Achsen in 3d gedreht

Ich setze Sie hier unter meine Lispe, wenn jemand erfahrener Upo(um einen Blick zu nehmen wäre perfekt

Danke.

Code:
;;; asin kehrt den Sinusbogen der Zahl zurück, in Radien
(vl-load-com)
(defun asin (num)
(falls = -1 nm 1)
(Anzahl (Anzahl 2))
)
)
;;; eine Transformationsmatrix auf einen Vektor von vladimir nesterovsky anwenden
(defun mxv)
(mapcar '(lambda (r) (ungefähr '+ (mapcar '* r v))) m)
)

(fünf c:blend)

(defun c:blender (/ ss n index str obj nome ins rot norm rotvec rotx roty rotz rotvec file)

(setq ss (list (cons 0 "insert"))) ;zero é il codice del nome
(Setq n (Länge ss)
(Satzindex 0)


(setq alt-arcunits (getvar "aunits")
(setq alt-arcprec (getvar "auprec"))

(setvar "aunits" 0)
(setvar "auprec" 6); Präzisionssatz für den Grad

(setq str "); leerer String


;inizio del wiederholen ------------

(Repeat n ; Wiederholung für jeden Block

(setq obj (vlax-name->vla-object (ssname ss index)))
(setq name (if) (vlax-property-p obj "effektivername")
(setq name (vla-get-wirksamname obj))
(setq name (vla-get-name obj))
)
)
(setq ins (vlax-get obj 'inclusionpoint))
(setq rot (vla-get-rotation obj))
(setq norm (vlax-get obj 'normal))

;; Berechnung der Rotation des Vektors x im Block sco

(setq rotvec (trans (polar '(0 0 0) rot 1.0) norm 0))

;; Berechnung der Drehungen des Blockes auf y und dann auf z

(setq roty (-) (asin (caddr rotvec)); Rotation auf y
(setq rotz (atan (cadr rotvec) (car rotvec)); Rotation auf z



;; Berechnung der Rückdrehung des Normalvektors auf z

(setq zvec (mxv)
(Liste (cos (- rotz)) (- (- rotz))) 0)
(Liste (- rotz)) (cos (- rotz)) 0)
„(0 0 1)
)
Standard
)
)

;; Berechnung der Rückdrehung des Normalvektors auf y

(setq zvec (mxv)
(Liste (cos (- roty)) 0 (sin (- roty)))
„(0 1 0)
(Liste (- (-)) 0 (cos (- roty)))
)
zvec
)
)

;; Berechnung der Drehung des Blocks auf x

(setq rotx (- (atan (cadr zvec) (cadddr zvec)))

(setq str (strcat str ; Zusatz zu vorheriger Zeichenfolge)
Name
" "
(rtos (car ins)2 6);6
" "
(rtos (cadr ins)2 6)
" "
(Rtos (Caddrins)2 6)
" "
(Gangtos rotx 0 8);8
" "
(angtos roty 0 8)
" "
(Gangtos rot 0 8)
" "
(rtos (vla-get-xscalefactor obj)
" "
(rtos (vla-get-yscalefactor obj)
" "
(rtos (vla-get-zscalefactor obj)
"\n"
)
)
(Setq-Index (1+ Index)); zum nächsten Block wechseln
)



(setvar "aunits" alt-arcunits)
;(setvar "auprec" alt-arcprec)





(falls
(setq Datei (getfiled "select a file" "" "txt" 1))

eine Datei auswählen oder erstellen
(Prog.)
(setq Datei (offen Datei "a") ; geöffnete lr Datei
(princ str-Datei); schreiben Sie in Datei
(close file) Datei schließen
)
)

(principal)
)
 
Rufen Sie die Funktion zurück, indem Sie die Name-Instanz übergeben <n> und <tipo> Sie wollen, dass ich zurückkomme.
dann, um die drei Drehachsen zu erhalten, erinnert die Funktion 3 mal:
(setq rotxy (fnbloccorot n "xy")
(setq rotxz)
(setq rotyz)

Grüße

Dies ist die Funktion:
; Blöcke, die mit extrudierten Einheiten nach der z-Achse der ucs-Welt gebaut werden
; n: Entitätsname; Typ: "xy" (rotation piano xy), "xz" (rotation piano xz), "yz" (rotation piano yz)
(defun fnbloccorot(n Typ / rot ent x y z pt)
(setq ent)
(setq pt (cdr (assoc 210 ent)))
(setq x (car pt))
(setq y) (cadr pt)
(Sectq z)
(cond)
((= Typ "xy") (setq rot (cdr)))
((= Typ "xz") (setq rot (angle (list 0 0 0) (list x z 0.0))))
((= Typ "yz") (setq rot (angle (list 0 0 0) (list y z 0.0))))
)
; von Radien bis sessadecimali
(setq rot (*(/ 180.0 pi) rot))
; Funktion gibt die Umwandlung in realer Anzahl der Winkelkette mit Präzision auf 6 Dezimals zurück
; verwendet, um die Maßnahme auf 6 Dezimal
(Ansatz (rtos rot 2 6)
)</tipo></n>
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben