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

[Recovered] Drehblöcke 3d

  • Ersteller Ersteller RUGGIUNO
  • Erstellt am Erstellt am

RUGGIUNO

Guest
Ingoenius06-10-2006, 09.30.13

hallo ich habe ein großes problem bei der wiederherstellung von informationen über lisp auf ausgewählten blöcken,

das ziel ist
wählen sie eine zeichnung blöcke und wiederherstellen sie eine .txt datei
so formatiert, dass jede zeile so ist

posx posz posz rotx roty roz sizex sizez

jetzt durch andere hilfen aus dem französischen forum ich bin gekommen, um fast alles zu haben, nur den weg, die x y z drehungen des blocks zu durchschreiben,

ich gebe ihnen die vollständige datei plus eine python-datei für blender, die zusammen dient.

stehst du auf? ?

hier sind die linien, die die franzosen empfehlen und dass ich nicht verstanden habe
wie man benutzt und wie man das skript einstellt

wir können den normalen träger des xy du sco du bloc flugzeugs erholen:

(setq norm (cdr (assoc 210 (entget ent)))))

et die globale rotation in bezug auf die achse des x du scg:

(setq norm (cdr (assoc 50 (entget ent)))))) (vla-get-rotation (vlax-ename->vla-object ent))

diese daten mit der einführstelle reichen aus, um einen block in der gleichen position wieder zu positionieren

Rpor6606-10-2006, 13.06.04

ich sage ihnen, was ich verstehe.
- der code 50 gibt den drehwinkel des blocks zurück, verglichen mit der z-achse der stromkreuzebene.
- code 210 aus der blockextrusionsrichtung als koordinaten zu einem quellpunkt 0,0.0.

sie können rotationen auf x- und y-achsen berechnen.

die extrusionsstelle, die ich nenne, pt1:
(setq pt1 (cdr 210 (entget ent)))

winkel gegenüber der achse y:
(setq angy (angle (list 0 0) (list (car pt1)))
praktisch x und z wert von pt1

winkel gegenüber x achse:
(setq angx (angle (list 0 0) (list (cadr pt1)))
praktischer wert y und z von pt1

an diesem punkt hoffe ich, dass ich nicht zu viele entwürfe gesagt habe, vergeben sie mir sonst.

Ingoenius06-10-2006, 13.42.00

tut mir leid wegen meiner unwissenheit, aber wo nimmst du pt1?
ist der blockeinschubpunkt?

ich versuche in jeder hinsicht, aber ich kann die lösung nicht finden
weiß eine gute seele, wie man diese informationen umwandelt??

Joseph06-10-2006, 15.28.14
tut mir leid wegen meiner unwissenheit, aber wo nimmst du pt1?
ist der blockeinschubpunkt?
ich versuche in jeder hinsicht, aber ich kann die lösung nicht finden
weiß eine gute seele, wie man diese informationen umwandelt??
pt1 ist nicht der eingangspunkt des blocks, dessen koordinateneinnahmen aus dem code 10.
pt1 ist das extrem eines einheitsvektors (genauer richtung), dessen erstes extrem in punkt 0,0.0 des wcs-systems platziert ist und das zweite extrem (pt1) koordinaten aufweist, gemessen im vergleich zu den im code 210 angegebenen wcs; gibt daher einen hinweis darauf, wie viel eine z-achse sich senkrecht zum bauplan des objekts bewegt hat und an ihn gebunden ist als die achse z des allgemeinen systems wcs.

anstatt ich hätte die winkel, die die form vers mit den plänen xy, xz bzw. yz berechnet.
joseph

chess3d06-10-2006, 17.05.31

ich kann ihnen ein makro in vba übergeben, das tut, was sie fragen, das einzige ist, dass ich nur die rotation des blocks im vergleich zu der x-ebene erkennen kann und nicht die anderen zwei, eigenschaften, die nicht von dem objekt unterstützt scheinen.

sie können nützlich sein

beispiel

2951.30809795133 1389.09771122033 0 5 5 5
b8_bul 2934.33048331957 881.86783654291 0 5 5 5
2899.79716463915 375.446428864027 0 5 5 5 5
b8_bul 1167.77729042529 1897.82314609118 0 5 5 5
2151.393139713 2873.86710126779 0 3.14159265358979 5 5 5 5 5
2151.39373139713 2837.90857169245
5 5 5 5
5.
2151.393139713 2183.04014469941 0 3.14159265358979 5 5 5 5
2151.393139713 2127.57512580539 0 3.14159265358979 5 5

Ingoenius09-10-2006, 11.03.50

dann dank Ihrer Zusammenarbeit und dem französischen Forum cadxp und dem Forum cd italienisch und kino3d formi wir sind arrivéto denken an ein fazit
für was die autolisp scribe betrifft

was kommt heraus

Aber Vorsicht, was ich gesehen habe, um zu arbeiten perfactorily
muss in den Einheiten der Zeichnung eingestellt werden, die analysiert wird
hoher Präzisionswert für Gradberechnung Ich legte 0,000000
und erhalten eine akzeptable Präzision für Blockdrehung

Ich habe Zeilen hinzugefügt, um die Präzisionsvariablen der Schleifen einzustellen


;;

(defun asin (num)
(falls)
(anzahl)
)
)


;; 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:blend (/ ss n index str obj name ins rot norm rotvec roty rotz rotvec file)

(setq ss (cons 0 "insert")) ;zero ist der Namecode
(Setq n (länge ss)
(Ersatzindex 0)


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

(setvar "aunits" 0)
(Setvar "auprec" 6)

(setq str) leerer String


; beginnend mit ---------

(Repeat n; Wiederholung für jeden Block

(setq obj (vlax-name->vla-object)
(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))

; drinkchnung der Rotation des vektors x im block sco

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

; drinkchnung der drehungen des blockes auf y und dann auf z

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

;

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

; drinkchnung der rückdrehung des normalvektors auf y

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

; drinkchnung der drehung des blocks auf x

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

(setq str (strcat str; zusatz zu vorheriger zeichenfolge)
Name
"
(rtos)
"
(rtos)
"
(rtos)
"
(angtos rotx)
"
(angtos roty)
"
(angtos rotz)
"
(rtos (vla-get-xscalefactor obj)
"
(rtos (vla-get-yscalefactor obj)
"
(rtos (vla-get-zscalefactor obj)
"\n"
)
)
(setq-Index (1+ Index)); zum nächsten Block
)



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





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

Eine neue Version
(Prog.)
(setq termi (offen termi "a"); geöffnet
(princ str-Datei)
(close file) datei schließen
)
)

(principal)
)

danke wieder für die Teilnahme von allen
 
Zuletzt bearbeitet von einem Moderator:

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