ããAutoCADåç»å¶ä¸ä¸ªç©å½¢çè¯ï¼ä½¿ç¨å移å½ä»¤ãOFFSETãæå¿«æ·é®å½ä»¤ãOã
ããå¦ææå¾å¤ç©å½¢è¦è¿è¡å移çè¯ï¼å¯ä»¥ä½¿ç¨ç¼ç¨æ¥å®ç°ï¼éæ©ç©å½¢ï¼è¾å
¥å移è·ç¦»å°±å¯ä»¥å移å®æã
ãã1
ãã2
ãã3
ãã4
ãã5
ãã6
ãã7
ãã8
ãã9
ãã10
ãã11
ãã12
ãã13
ãã14
ãã15
ãã16
ãã17
ãã18
ãã19
ãã20
ãã21
ãã22
ãã23
ãã24
ãã25
ãã26
ãã27
ãã28
ãã29
ãã30
ãã31
ãã32
ãã33
ãã34
ãã35
ãã36
ãã37
ãã38
ãã39
ãã40
ãã41
ãã42
ãã43
ãã44
ãã45
ãã46
ãã47
ãã48
ãã49
ãã50
ãã
ãã(defun C:tes ( / #r1 &k1 &kw1 &ob1 &ob2 dis1 dis2 ent1 pt1 pt2 ss x)
ãã(if (null vlax-dump-object) (vl-load-com) );å è½½vlaxå½æ°
ãã(if (and (setq &kw1 (ssget '((0 . "LWPOLYLINE") (70 . 1))));éæ©å°éå¤æ®µçº¿
ãã(setq #r1 (getdist "\n请è¾å
¥å移è·ç¦»"))
ãã(> #r1 0);è·ç¦»æ¯æ£å¼
ãã)
ãã(progn;;1
ãã(while (setq &k1 (ssname &kw1 0));对象åæ
ãã(setq &kw1 (ssdel &k1 &kw1))
ãã(setq ss (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget &k1))));åå¾å¤æ®µçº¿åæ
ãã(if (and (= (length ss) 4);å¦ææ¯4个ç¹ï¼ç¬¦åç©å½¢ä¸ä¸ªæ¡ä»¶;è¿å
¥ä¸ä¸æ¥
ãã(= (distance (car ss) (caddr ss)) (distance (cadr ss) (cadddr ss)));对è§çº¿ç¸å
ãã)
ãã(progn;;2
ãã(setq &ob1 (vlax-ename->vla-object &k1))
ãã(vla-GetBoundingBox &ob1 'pt1 'pt2);æåå
å´æ¡
ãã(setq pt1 (vlax-safearray->list pt1) pt2 (vlax-safearray->list pt2))
ãã(setq pt1 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ pt1 pt2)));åå¾ç©å½¢ä¸å¿ç¹
ãã(if (and (setq pt2 (inters (car ss) (caddr ss) (cadr ss) (cadddr ss)));对è§çº¿æ交ç¹
ãã(<= (distance pt1 pt2) 0.00001);对è§çº¿ä¸ä¸å¿ç¹éå
ãã);确认æ¯ç©å½¢
ãã(progn;;3
ãã(setq pt2 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ (car ss) (cadr ss))))
ãã(setq dis1 (distance pt1 pt2))
ãã(setq pt2 (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ (caddr ss) (cadr ss))))
ãã(setq dis2 (distance pt1 pt2))
ãã(if (< dis2 dis1) (setq dis1 dis2) )
ãã(setq dis1 (* 0.1 dis1))
ãã(setq ent1 (entlast))
ãã(vla-offset &ob1 dis1)
ãã(if (and (setq ent1 (entnext ent1));4
ãã(setq dis1 (vlax-curve-getDistAtParam &ob1 (vlax-curve-getEndParam &ob1)))
ãã(> dis1 0)
ãã)
ãã(progn;;4
ãã(setq &ob2 (vlax-ename->vla-object ent1))
ãã(setq dis2 (vlax-curve-getDistAtParam &ob2 (vlax-curve-getEndParam &ob2)))
ãã(vla-delete &ob2)
ãã(if (> dis2 dis1) (vla-offset &ob1 #r1) (vla-offset &ob1 (* #r1 -1)) )
ãã);progn;4
ãã);if;4
ãã);progn;3
ãã);if;3
ãã);progn;2
ãã);if;2
ãã);while
ãã);progn;1
ãã);if;1;ç©å½¢çç¹ç¹ï¼å¯¹è§çº¿ç¸åï¼4个ç¹ï¼å¯¹è§çº¿æ交ç¹å¹¶ä¸ä¸å¿ç¹éå
ãã(prin1)
ãã);;å¤å¶å°è®°äºæ¬,以ã.lspã为åç¼å½å,æå¼AutoCADï¼autolispå è½½ï¼å½ä»¤ãTESã
ãã
追é®è¯·é®å
·ä½å¦ä½å移å¢ï¼
æå
ç»äºå¤é¢ç大ç©å½¢ï¼ ç¶åæå®å移缩å°æè¿æ ·
é£ åæ¥çæä¹ç¨å移ç»åºé£ä¸ä¸ªç¸å大å°çç©å½¢ï¼åæå¦é®é¢é£æ ·ç