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
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
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
pt1 ist nicht der eingangspunkt des blocks, dessen koordinateneinnahmen aus dem code 10.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 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: