Article View: pl.comp.cad
Article #53918[acad] poprawianie podkładu narysowanego bez snap'a'
From: Lukasz Kozicki
Date: Fri, 23 Mar 2012 22:57
Date: Fri, 23 Mar 2012 22:57
72 lines
3241 bytes
3241 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) )
Technical Details
Message-ID:
<4f6d0002$1@news.home.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!nf1.ipartners.pl!ipartners.pl!news.home.net.pl!not-for-mailShow Full Headers
Complete Article Headers
Date: Fri, 23 Mar 2012 23:57:59 +0100 From: Lukasz Kozicki <ROT13yxbmvpxv@vg.cy.invalid> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 MIME-Version: 1.0 Newsgroups: pl.comp.cad Subject: [acad] poprawianie podkładu narysowanego bez snap'a' NNTP-Posting-Host: 46.186.87.203 Message-ID: <4f6d0002$1@news.home.net.pl> X-Trace: news.home.net.pl 1332543490 46.186.87.203 (23 Mar 2012 23:58:10 +0100) Organization: home.pl news server Lines: 72 X-Authenticated-User: junk.nospam Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!nf1.ipartners.pl!ipartners.pl!news.home.net.pl!not-for-mail Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit