|
zaprve: nechapu, jak je mozne, ze v ramci jednoho software nejde konvertovat entity pribuzneho charakteru jednoduse mezi sebou....ale to je asi taky nadlouho...
zadruhe: tip nepomaha: ze 2D solidu jsem sice jeho pomoci udelal regiony, ale co s nimi dal vazne nevim:) - v tipu uvedeny "convtosurface" udělá totéž, co planesurf - vyrobí mi rozčtverečkovaný surface(Planar), se kterým dále nejde zas nic dělat.
zatreti: zadani mi prijde porad jednoduche - na obrazovce vidim trojuhelnik a v properties se jmenuje solid...to, že nejde přes booleovské operace sčítat s dalšími, proteď neřeším - stačilo by mi, aby se ten trojuhelník jmenoval face....respektive jakkoli, ale tak, abych nakonci měl mesh, na kterou lze aplikovat smoothing atd. ... a to nemam.
zactvrte: uzivatel PUDIS mi poslal lisp: mohl by se na něj prosím někdo podívat a kdyžtak ho prosím upravit? Cíl jsou faces....prosím...
;****************************** C:OBRYS3D ************************************** ;Makro pro AutoCAD 2000 ;Převede desku a 3D plochu na úsečky - pouze viditelné hrany !!! ;ing. Nekvasil 23.9.2001
(defun C:OBRYS3D (/ tl p oldla uch typ dat ent hlad kod bod1 bod2 bod3 bod4 l n pocet) (prompt "\nPřevede desku a 3D plochu na úsečky - pouze viditelné hrany !!!") (command "_UNDO" "_BE") (setq p (ssget)) (if p (progn (setvar "CMDECHO" 0) (setq tl (getvar "PLINEWID") oldla (getvar "CLAYER") uch (getvar "OSMODE")) (setvar "PLINEWID" 0) (setvar "OSMODE" 0) (setq n (sslength p) pocet 0 l 0)
(while (< l n) (setq typ (cdr (assoc 0 (setq dat (entget (setq ent(ssname p l))))))) (setq hlad (cdr (assoc 8 dat))) (setq kod (cdr (assoc 70 dat))) (setvar "CLAYER" hlad) (if (= "SOLID" typ) (progn (setq bod1 (trans (cdr (assoc 10 dat)) ent 1)) (setq bod2 (trans (cdr (assoc 11 dat)) ent 1)) (setq bod3 (trans (cdr (assoc 12 dat)) ent 1)) (setq bod4 (trans (cdr (assoc 13 dat)) ent 1)) (if (= 0 (distance bod3 bod4)) (command "_LINE" bod1 bod2 bod3 "_C") (command "_LINE" bod1 bod2 bod4 bod3 "_C") ) (entdel ent) (setq pocet (1+ pocet)) ) ) (if (= "3DFACE" typ) (progn (setq bod1 (trans (cdr (assoc 10 dat)) ent 1)) (setq bod2 (trans (cdr (assoc 11 dat)) ent 1)) (setq bod3 (trans (cdr (assoc 12 dat)) ent 1)) (setq bod4 (trans (cdr (assoc 13 dat)) ent 1)) (if (= 0 (logand kod 1)) (command "_LINE" bod1 bod2 "")) (if (= 0 (logand kod 2)) (command "_LINE" bod2 bod3 "")) (if (= 0 (logand kod 4)) (if (= 0 (distance bod3 bod4)) (command "_LINE" bod3 bod1 "") (command "_LINE" bod3 bod4 "") ) ) (if (= 0 (logand kod 8)) (if (/= 0 (distance bod3 bod4)) (command "_LINE" bod4 bod1 "") ) ) (entdel ent) (setq pocet (1+ pocet)) ) ) (setq l (1+ l)) ) ;while
(setvar "PLINEWID" tl) (setvar "CLAYER" oldla) (setvar "OSMODE" uch) (command "_UNDO" "_E") (prompt (strcat "\nZpracováno " (itoa pocet) " entit")) ) )
(command "_UNDO" "_E") (princ))
------------- Rostislav Říha
|