🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Lukasz Kozicki Fri, 23 Mar 2012 23:57
[acad] poprawianie podkładu narysowanego bez snap'a'
#52798
Author: Lukasz Kozicki
Date: Fri, 23 Mar 2012 23:57
73 lines
2428 bytes
Dla tych, którzy użerali się z rysunkami zrobionymi
przez partacza który nie używa snapa, z wymiarami które
nie domykają się w łańcuch i ułamkowymi odległościami
do każdego wierzchołka... znalazłem rzecz pożyteczną -
mi to zaoszczędziło kilka godzin poprawiania podkładu:
http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/Move-all-vertices-to-existing-snap-precision/td-p/1762462

Z tym, ze po poprawieniu trzeba przejrzeć, bo może się
np. okazać że jeden koniec linii jest poprawiony w lewo
a drugi w prawo, albo 2 pozornie nakładające się linie
rozeszły się na boki.

Pozdr,
ŁK

PS. Aby nie zaginęło zacytuję:

(defun round_number (xr n / )
(* (fix (atof (rtos (* xr n) 2 0))) (/ 1.0 n))
)
(defun c:regular_draw ( / js n_count ent dxf_ent dxf_lst)
(setq js (ssget '((0 .
"FACE3D,ARC,ATTDEF,ATTRIB,CIRCLE,ELLIPSE,INSERT,LINE,POLYLINE,LWPOLYLINE,*TEXT,POINT,SHAPE,SOLID,TRACE")))
n_count -1)
(cond
(js
(setvar "cmdecho" 0)
(command "_.undo" "_group")
(while (setq ent (ssname js (setq n_count (1+ n_count))))
(setq dxf_ent (entget ent))
(cond
((eq (cdr (assoc 0 dxf_ent)) "LWPOLYLINE")
(setq dxf_lst (cdr dxf_ent) dxf_ent (list (car dxf_ent)))
(while (cdr dxf_lst)
(if (eq 10 (caar dxf_lst))
(setq dxf_ent (cons (cons 10 (mapcar '(lambda (x p) (round_number x (/ 1
p))) (cdar dxf_lst) (getvar "SNAPUNIT"))) dxf_ent))
(setq dxf_ent (cons (car dxf_lst) dxf_ent))
)
(setq dxf_lst (cdr dxf_lst))
)
(setq dxf_ent (reverse dxf_ent))
)
((eq (cdr (assoc 0 dxf_ent)) "POLYLINE")
(while (eq (cdr (assoc 0 (setq dxf_ent (entget (entnext (cdar
dxf_ent)))))) "VERTEX")
(setq dxf_ent (subst (cons 10 (mapcar '(lambda (x p) (round_number x (/
1 p))) (cdr (assoc 10 dxf_ent)) (append (getvar "SNAPUNIT") (list (car
(getvar "SNAPUNIT")))))) (assoc 10 dxf_ent) dxf_ent))
(entmod dxf_ent)
))
(T
(foreach n dxf_ent
(if (member (car n) '(10 11 12 13 40))
(if (listp (cdr n))
(setq dxf_ent (subst (cons (car n) (mapcar '(lambda (x p) (round_number
x (/ 1 p))) (cdr n) (append (getvar "SNAPUNIT") (list (car (getvar
"SNAPUNIT")))))) (assoc (car n) dxf_ent) dxf_ent))
(setq dxf_ent (subst (cons (car n) (round_number (cdr n) (/ 1 (car
(getvar "SNAPUNIT"))))) (assoc (car n) dxf_ent) dxf_ent))
)))))
(entmod dxf_ent)
(entupd ent)
)
(command "_.undo" "_end")
(setvar "cmdecho" 1)
(princ (strcat "\n" (itoa n_count) " transformed object(s)."))
)
(T (princ "\nNo found valid object!"))
)
(prin1)
)

Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads