±¾Ìû×îºóÓÉ ×Ô¹±»ÆÃ÷Èå ÓÚ 2014-11-7 09:43 ±à¼
;;164.1 [¹¦ÄÜ] ÇúÏßÊÇ·ñ·â±Õ
;;164.2 [¹¦ÄÜ]ʹ¶à¶ÎÏß·â±Õ
;;164.3 [¹¦ÄÜ] ¶à¶ÎÏ߶˵ãÁбí
;;164.4 [¹¦ÄÜ] ¾ØÐÎÖеã×ø±ê
;;164.5 [¹¦ÄÜ] ²ÎÊýparam´¦µÄÇÐÏß·½ÏòµÄ½Ç¶È
;;164.6 [¹¦ÄÜ] ²ÎÊýparam´¦µÄ·¨Ïß·½ÏòµÄ½Ç¶È
;;164.7 [¹¦ÄÜ] ÇúÏßÒ»µãµÄÇÐÏß·½ÏòµÄ½Ç¶È
;;164.8 [¹¦ÄÜ] ÇúÏßÒ»µãµÄ·¨Ïß·½ÏòµÄ½Ç¶È
;;164.9 [¹¦ÄÜ] È¥³ý¶à¶ÎÏßÖØµã
;;164.10 [¹¦ÄÜ] ÅжϵãÊÇ·ñÔÚÇúÏßÉÏ
;;164.11 [¹¦ÄÜ] ÇúÏß³¤¶È
;;164.12 [¹¦ÄÜ] ¶à¶ÎÏß×Ó¶ÎÊýÁ¿
;;164.13 [¹¦ÄÜ] ÇúÏßÖеã
;;164.14 [¹¦ÄÜ] ÇúÏßÒ»µãµÄ²ÎÊýparam
;;164.15 [¹¦ÄÜ] ²ÎÊýparam´¦µÄ×ø±ê
;;164.16 [¹¦ÄÜ] ¶à¶ÎÏßµÚn×Ó¶ÎµÄÆðµã×ø±ê
;;164.17 [¹¦ÄÜ] ¶à¶ÎÏßµÚn×ӶεÄÖÕµã×ø±ê
;;164.18 [¹¦ÄÜ] ¶à¶ÎÏßËùµã»÷×ӶεÄÁ½¶ËµãÁбí
;;164.19 [¹¦ÄÜ] ¶à¶ÎÏßËùµã»÷µã×î½üµÄÒ»¸ö¶¥µã
;;164.20 [¹¦ÄÜ] ¶à¶ÎÏßËùµã»÷×Ó¶Îparam(Ë÷Òý)
;;164.21 [¹¦ÄÜ] ¶à¶ÎÏßËùµã»÷×Ó¶ÎµÄÆðµã×ø±ê
;;164.22 [¹¦ÄÜ] ¶à¶ÎÏßËùµã»÷×ӶεÄÖÕµã×ø±ê
;;164.23 [¹¦ÄÜ] ¶à¶ÎÏßËù»÷µãÀëÆðµã½ü
;;164.24 [¹¦ÄÜ] ¶à¶ÎÏßËùµã»÷×ӶηñÊÇÖ±Ïß(·µ»ØnilÊÇ»¡)
;;164.25 [¹¦ÄÜ] Çó¶à¶ÎÏßÉϵĻ¡¶Î(Ô²»òÔ²»¡Ò²ÓÐЧ)µÄÔ²ÐÄ by caoyin
;;164.26 [¹¦ÄÜ] Çó¶à¶ÎÏßÉϵĻ¡¶Î(Ô²»òÔ²»¡Ò²ÓÐЧ)µÄÔ²ÐÄ
;;164.27 [¹¦ÄÜ] Åж϶à¶ÎÏßÊÇ·ñÓÐÔ²»¡(͹¶È/=0)µÄ×Ó¶Î
;;164.28 [¹¦ÄÜ] Åж϶à¶ÎÏßÊÇ·ñÓÐÔ²»¡(͹¶È/=0)µÄ×Ó¶Î
;;164.29 [¹¦ÄÜ] Á¬½ÓÏß¡¢»¡³É¶à¶ÎÏß
;;164.30 [¹¦ÄÜ] ¹¹Ôì¾ØÐÎ by highflybird
;;164.31 [¹¦ÄÜ] µã±íÉú³É¶à¶ÎÏß
;;164.32 [¹¦ÄÜ] 3D¶à¶ÎÏß
;;164.33 [¹¦ÄÜ] ¶à¶ÎÏß·´Ïò(Æðµã·´³ÉÖÕµã) byzml84
;;164.34 [¹¦ÄÜ] ¶à¶ÎÏßɾ³ý¶¥µã
;;164.35 [¹¦ÄÜ] ¶à¶ÎÏßÔö¼Ó¶¥µã
;;164.36 [¹¦ÄÜ] ¶à¶ÎÏßÐ޸Ķ¥µã
;;164.37 [¹¦ÄÜ] ¶à¶ÎÏß¿½±´×Ó¶Î
;;164.38 [¹¦ÄÜ] Ð޸Ķà¶ÎÏß×Ó¶Î
;;164.39 [¹¦ÄÜ] Ð޸Ķà¶ÎÏß×Ó¶ÎΪֱÏß
;;164.40 [¹¦ÄÜ] µãÔÚ·â±Õ¶à¶ÎÏßÄÚ·µ»ØT£¬ÆäÓànil By ¿ñµ¶
;;164.41 [¹¦ÄÜ] µãÔÚ·â±Õ¶à¶ÎÏßÄÚ·µ»ØT£¬ÆäÓànil By SmcTools
;;164.42 [¹¦ÄÜ] ÅжϵãÔÚ·â±ÕÇúÏßÄÚÍ⣬×Ô½»ÇúÏß²»ÊÊÓà By Gu_xl
;;164.43 [¹¦ÄÜ] µãÔÚ·â±Õ¶à¶ÎÏßÄÚ·µ»ØT;ÏßÉÏ0;Íânil
;;164.44 [¹¦ÄÜ] ¶à¶ÎÏß»¡¶ÎÈ«¸ÄΪֱÏß¶Î
;;164.45 [¹¦ÄÜ] ÑØ¶à¶ÎÏßÈ¡µã£¬»¡´¦°´½Ç¶È¼ÓÃÜÈ¡µã
;;164.46 [¹¦ÄÜ] ¶à¶ÎÏß×ÔÏཻ by st788796;;164.33 [¹¦ÄÜ] ¶à¶ÎÏßɾ³ý¶¥µã By ×Ô¹±»ÆÃ÷Èå
(defun HH:delLwpolyPt (/ EN ENT L1 L2 P P1 P2 P90 SS X Y)
(setq p1 (getpoint))
(setq p2 (getcorner p1))
(if (setq ss (ssget "C" p1 p2 '((0 . "LWPOLYLINE"))))
(progn
(setq en (ssname ss 0))
(setq ENT (entget EN))
(if (> (setq P90 (cdr (assoc 90 ent))) 2)
(progn
(setq p (mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1 p2))
(setq p (vlax-curve-getclosestpointto en (trans p 1 0)))
(setq p1 (HH:PickClosePt en p))
(setq p1 (list 10 (car p1) (cadr p1)))
(setq L2 (cddddr (member p1 ent))) ;ºó¶Î
(setq L1 (reverse (cdr (member p1 (reverse ent))))) ;ǰ¶Î
(setq ent (append L1 L2))
(entmod (subst (cons 90 (1- P90)) (assoc 90 ent) ent))
)
)
)
)
)
;;ʾÀý(HH:delLwpolyPt1 (car(setq en(entsel))) (cadr en)) By ×Ô¹±»ÆÃ÷Èå
(defun HH:delLwpolyPt1 (en p / ENT L1 L2 P1)
(setq ENT (entget en))
(setq p (vlax-curve-getclosestpointto en (trans p 1 0)))
(setq p1 (HH:PickClosePt en p)) ;Àëp×î½üµÄ¶¥µã
(setq p1 (list 10 (car p1) (cadr p1)))
(setq L2 (cdr (member p1 ent))) ;ºó¶Î
(setq L1 (reverse (cdr (member p1 (reverse ent))))) ;ǰ¶Î
(entmod (append L1 L2))
)
;;164.34 [¹¦ÄÜ] ¶à¶ÎÏßÔö¼Ó¶¥µã By ×Ô¹±»ÆÃ÷Èå
;;ʾÀý(HH:LwAddVertex (car(setq en(entsel))) (cadr en))
(defun HH:LwAddVertex (en pt / EN GR N PP)
;;Ôö¼ÓÒ»¸ö¶¥µã
(defun LwAddVertex (obj index pt bugle sw ew)
(vlax-invoke obj 'addvertex index pt)
(vla-setbulge obj index bugle)
(vla-setwidth obj index sw ew)
)
(setq pp (vlax-curve-getClosestPointTo en (trans pt 1 0)))
(setq n (fix (vlax-curve-getParamAtPoint en pp)))
(setq obj (vlax-ename->vla-object en))
(vla-GetWidth obj n 'sw 'ew)
(setq pp (getpoint "\n ÐÂÔöµã "))
(setq pp (mapcar '+ '(0 0) pp))
(vl-catch-all-apply 'LwAddVertex (list obj (1+ n) pp 0 sw sw))
)
;;164.35 [¹¦ÄÜ] ¶à¶ÎÏßÐ޸Ķ¥µã By ×Ô¹±»ÆÃ÷Èå
;;ʾÀý(HH:ModifyVertex (car(setq en(entsel))) (cadr en) (getpoint))
(defun HH:ModifyVertex (en pt newPt / ENT L1 L2 NPT P P10)
(setq p (HH:PickClosePt en pt))
(setq p10 (list 10 (car p) (cadr p)))
(setq ent (entget en))
(setq L2 (cdr (member p10 ent)))
(setq L1 (reverse (cdr (member p10 (reverse ent)))))
(setq Npt (list (list 10 (car newPt) (cadr newPt))))
(entmod (append L1 Npt L2))
)
;;(HH:ModifyVertex1 (car(setq en(entsel))) (cadr en)) By ×Ô¹±»ÆÃ÷Èå
(defun HH:ModifyVertex1 (en p / ENT GR L1 L2 NPT P10)
(setq ent (entget en))
(setq pt (HH:PickClosePt en p))
(setq p10 (list 10 (car pt) (cadr pt)))
(setq L2 (cdr (member p10 ent)))
(setq L1 (reverse (cdr (member p10 (reverse ent)))))
(while (and (setq gr (grread 5)) (= (car gr) 5))
(setq Npt (list (list 10 (car (cadr gr)) (cadr (cadr gr)))))
(entmod (append L1 Npt L2))
)
)
;;164.36 [¹¦ÄÜ] ¶à¶ÎÏß¿½±´×Ó¶Î By ×Ô¹±»ÆÃ÷Èå
;;(HH:CopyLwSeg (car(setq en(entsel))) (cadr en))
(defun HH:CopyLwSeg (en p / ENT L0 L1 L2 LASTENT N P1 PP TEM)
(setq pp (vlax-curve-getClosestPointTo en p))
(setq n (fix (vlax-curve-getParamAtPoint en pp)))
(setq p1 (vlax-curve-getPointAtParam en n))
(setq p1 (list 10 (car p1) (cadr p1)))
(setq ent (entget en))
(setq tem (member p1 ent))
(repeat 8 (setq L0 (cons (car tem) L0)) (setq tem (cdr tem)))
(setq L0 (reverse L0))
(setq L2 (list (last tem)))
(setq L1 (list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 2)
)
)
(entmake (append L1 l0 L2))
(setq Lastent (entlast))
(command "_.move" Lastent "" pp pause)
)
;;164.37 [¹¦ÄÜ] Ð޸Ķà¶ÎÏß×Ó¶Î By ×Ô¹±»ÆÃ÷Èå
;;ʾÀý(HH:ModifySeg (car(setq en(entsel))) (cadr en))
(defun HH:ModifySeg (en p / ENT GR I L1 L2 N P1 P2 P42 PP X Y)
;;133.1 [¹¦ÄÜ] Ðýתһ¸öµã(¼û113)
;;Rotate 'pnt'µã from a base point of 'p1' and through an angle of 'ang' (in radians)
(defun MJ:rotate_pnt (pnt p1 ang)
(polar p1 (+ (angle p1 pnt) ang) (distance p1 pnt))
)
;;Á½µãÖ®Öеã
(defun mid (p1 p2 / X Y)
(mapcar '(lambda (X Y) (/ (+ X Y) 2.0)) p1 p2)
)
;;ÒÑÖªÈýµãp1 p2 p£¬Çó×éÂë42
(defun my42 (p1 p2 pt / CEN D H P1P2 P1T P2P1 PT1 R)
(setq d (/ (distance p1 p2) 2.0))
(setq p1p2 (mid p1 p2))
(setq p2p1 (MJ:rotate_pnt p1 p1p2 (/ pi 2)))
(setq pt1 (mid p1 pt))
(setq p1t (MJ:rotate_pnt p1 pt1 (/ pi 2)))
(setq cen (inters p1p2 p2p1 pt1 p1t nil))
(setq h (car (trans (mapcar '- cen p1) 0 (mapcar '- p1 p2))))
(setq r (distance cen p1))
(if (MINUSP h)
(setq r (+ r h))
(setq r (- h r))
)
(/ r d)
)
(setq pp (vlax-curve-getClosestPointTo en p))
(setq n (fix (vlax-curve-getParamAtPoint en pp)))
(setq p1 (vlax-curve-getPointAtParam en n))
(setq p2 (vlax-curve-getPointAtParam en (1+ n)))
(setq ent (entget en))
(setq i 0)
(while (or (/= (caar ent) 42)
(if (< i n)
(setq i (1+ i))
)
)
(setq L1 (cons (car ent) L1)
ent (cdr ent)
)
)
(setq L1 (REVERSE L1))
(setq L2 (cdr ent))
(while (and (setq gr (grread 5)) (= (car gr) 5))
(setq p42 (cons 42 (my42 p1 p2 (cadr gr))))
(entmod (append L1 (list p42) L2))
)
(princ)
)
;;164.38 [¹¦ÄÜ] Ð޸Ķà¶ÎÏß×Ó¶ÎΪֱÏß By ×Ô¹±»ÆÃ÷Èå
;;(HH:ModifySegLine (car(setq en(entsel))) (cadr en))
(defun HH:ModifySegLine (en p / ENT I L1 L2 N P1 P2 PP)
(setq pp (vlax-curve-getClosestPointTo en p))
(setq n (fix (vlax-curve-getParamAtPoint en pp)))
(setq p1 (vlax-curve-getPointAtParam en n))
(setq p2 (vlax-curve-getPointAtParam en (1+ n)))
(setq ent (entget en))
(setq i 0)
(while (or (/= (caar ent) 42)
(if (< i n)
(setq i (1+ i))
)
)
(setq L1 (cons (car ent) L1)
ent (cdr ent)
)
)
(setq L1 (REVERSE L1))
(setq L2 (cdr ent))
(entmod (append L1 (list (cons 42 0)) L2))
(princ)
)
;;164.39.1 [¹¦ÄÜ] µãÔÚ·â±Õ¶à±ßÐÎÄÚ·µ»ØT;ÏßÉÏ0;Íânil
;;¸Ä±à×Ô ¿ñµ¶µÄ³ÌÐò(Ó¦¸Ã¼ò½à¶øÍêÃÀ) By ×Ô¹±»ÆÃ÷Èå
;;(PtInorOut1 (car (entsel)) (getpoint))
(defun PtInorOut1 (en pt / P1 P2 PP PT PTS)
(setq pp (vlax-curve-getClosestPointTo en pt))
(if (equal pp pt 0.00001)
0
(progn
(setq pts (HH:PtLists en))
(setq pts (MAPCAR '(LAMBDA (p1 p2) (REM (- (ANGLE pt p1) (ANGLE pt p2)) PI))
(CONS (LAST pts) pts)
pts
)
)
(equal (ABS (APPLY '+ pts)) PI)
)
)
)
;;164.39.2 [¹¦ÄÜ] µãÔÚ·â±Õ¶à±ßÐÎÄÚ·µ»ØT£¬ÆäÓànil By SmcTools
;;(PtInorOut2 (car(entsel))(getpoint))
(defun PtInorOut2 (en pt / I N PT_LIST VA VA_COUNT)
(setq pt_list (HH:PtLists en))
(setq i 0
va_count 0
n (length pt_list)
pt_list (append pt_list (list (car pt_list)))
)
(repeat n
(setq va (- (angle pt (nth i pt_list))
(angle pt (nth (1+ i) pt_list))
)
)
(cond ((> va pi) (setq va (- va pi)))
((< va (* -1 pi)) (setq va (+ va pi)))
)
(setq va_count (+ va_count va)
i (1+ i)
)
)
(equal (abs va_count) pi)
)
;;164.40 [¹¦ÄÜ] ÅжϵãÔÚ·â±ÕÇúÏßÄÚÍ⣬×Ô½»ÇúÏß²»ÊÊÓà By Gu_xl 2012.07.31
;;·µ»Ø: µãÔÚ·â±ÕÇúÏßÄÚ·µ»ØT;ÏßÉÏ0;Íânil
;;²âÊÔ: (gxl-PtInCurveP (car(entsel "\nÑ¡ÔñÇúÏß:")) (getpoint))
(defun gxl-PtInCurveP (POLY PT / CP LW MINP MAXP MINX
MINY MAXX MAXY X Y LST CLOCKWISEP
ENDPARAM CURVELENGTH PARAM DIST D1 D2
DEV
)
(cond
((equal pt (vlax-curve-getclosestpointto poly pt) 1e-8) 0) ;_ µãÔÚÇúÏßÉÏ T
((progn
(vla-GetBoundingBox
(setq lw (vlax-ename->vla-object POLY))
'MinP
'MaxP
)
(setq MinP (vlax-safearray->list MinP))
(setq MaxP (vlax-safearray->list MaxP))
(setq minx (car MinP)
miny (cadr MinP)
maxx (car MaxP)
maxy (cadr MaxP)
x (car pt)
y (cadr pt)
)
(or (< x minx)
(> x maxx)
(< y miny)
(> y maxy)
)
)
NIL ;_ µãÔÚÇúÏß×îС°üΧºÐÍâ nil
)
(t
(setq
lst (mapcar
(function
(lambda (x)
(vlax-curve-getParamAtPoint
lw
(vlax-curve-getClosestPointTo lw x)
)
)
)
(list minp
(list minx maxy)
MaxP
(list maxx miny)
)
)
) ;_ ×îС°üΧºÐµãÔÚÇúÏßÉϵÄͶӰµãµÄ²ÎÊý±í
(setq ClockwiseP
(if (or
(<= (car lst) (cadr lst) (caddr lst) (cadddr lst))
(<= (cadr lst) (caddr lst) (cadddr lst) (car lst))
(<= (caddr lst) (cadddr lst) (car lst) (cadr lst))
(<= (cadddr lst) (car lst) (cadr lst) (caddr lst))
) ;_ or
t
) ;_ if
) ;_ ÅжÏÇúÏßÊÇ·ñΪ˳ʱÕ룬˳ʱÕë = T
(setq endparam (vlax-curve-getendparam poly)
curvelength (vlax-curve-getDistAtParam poly endparam) ;_ ÇúÏß³¤¶È
)
(setq param (vlax-curve-getparamatpoint poly cp)
dist (vlax-curve-getDistAtParam poly param)
)
(if (equal param (fix param) 1e-8)
(progn
(setq d1 (- dist 1e-8))
(if (minusp d1)
(setq d1 (+ curvelength d1))
)
(setq d2 (+ dist 1e-8))
(if (> d2 curvelength)
(setq d2 (- d2 curvelength))
)
(if (< (distance pt (vlax-curve-getpointatdist poly d1))
(distance pt (vlax-curve-getpointatdist poly d2))
)
(setq param (vlax-curve-getparamatdist poly d1))
(setq param (vlax-curve-getparamatdist poly d2))
)
)
)
(setq dev (vlax-curve-getFirstDeriv poly param)
cp (vlax-curve-getpointatparam poly param)
)
(= ClockwiseP
(
(lambda (p1 p2 p3)
(<
(* (- (car p2) (car p1)) (- (cadr p3) (cadr p1)))
(* (- (cadr p2) (cadr p1)) (- (car p3) (car p1)))
)
)
pt
cp
(mapcar '+ cp dev)
)
)
)
)
)
;;164.41.1 [¹¦ÄÜ] µãÔÚ·â±ÕÇúÏßÄÚ·µ»ØT;ÏßÉÏ0;Íânil
;;·â±ÕÇúÏß±ØÐëÈ«¿É¼û,»¹ÊÇcaoyinµÄÄǸö³ÌÐòºÃ By ×Ô¹±»ÆÃ÷Èå
;;(PtInorOut (car(entsel))(getpoint))
(defun PtInorOut (en p / AREA AREA1 EN1 PP)
(setq pp (vlax-curve-getclosestpointto en (trans p 1 0)))
(if (equal pp p 0.00001)
0
(progn
(setq area (vlax-get (vlax-ename->vla-object en) 'area))
(command "_.offset" "" en p "");ÓÃ(vla-offset obj 0.00001)±È½Ï¾àÀë
(setq area1 (vlax-get (vlax-ename->vla-object en1) 'area))
(entdel en1)
(> area1 area)
)
)
)
;;164.41.2 [¹¦ÄÜ] µãÔÚ·â±Õ¶à¶ÎÏßÄÚ·µ»ØT;ÏßÉÏ0;Íânil
;;·â±ÕÇúÏß±ØÐëÈ«¿É¼û
;;(PtInorOut3 (car(entsel))(getpoint))
(defun PtInorOut3 (en p / EN1 PP SS)
(setq pp (vlax-curve-getclosestpointto en (trans p 1 0)))
(if (equal pp p 0.00001)
0
(progn
(entmake (list '(0 . "POINT") (cons 10 p)))
(setq en1 (entlast))
(if (and (setq ss (ssget "wp" (HH:PtLists en)))
(ssmemb en1 ss)
)
(setq ss T)
)
(entdel en1)
ss
)
)
)
;;164.42 [¹¦ÄÜ] ¶à¶ÎÏß»¡¶ÎÈ«¸ÄΪֱÏß¶Î By ×Ô¹±»ÆÃ÷Èå
;;(HH:ModifySegLine1 (car(setq en(entsel))))
(defun HH:ModifySegLine1 (en / X)
(entmod
(mapcar '(lambda (x)
(if (equal (car x) 42)
(cons 42 0)
x
)
)
(entget en)
)
)
)
;;¶à¶ÎÏß×ÔÏཻ by st788796
(defun rrr (e / getlst ep obj pts ptl pams il)
(defun Getlst (n / i il)
(setq i (fix n))
(repeat i (setq il (cons (setq n (1- n)) il)))
il
)
(setq obj (vlax-ename->vla-object e)
ep (vlax-curve-getendparam e)
)
(if (setq pts (vlax-invoke obj 'IntersectWith obj 0))
(progn
(while pts
(setq ptl (cons (list (car pts) (cadr pts) (caddr pts)) ptl)
pts (cdddr pts)
)
)
(setq il (cdr (getlst ep))
pams (mapcar '(lambda (x)
(vlax-curve-getparamatpoint e x)
)
ptl
)
)
(if (vlax-curve-isclosed e)
(not (equal (reverse pams)
(cons 1. (cons 0. (cdr il)))
)
)
(not (equal (vl-remove '0. (reverse pams)) il)) ;_¼Ù±ÕºÏÇé¿ö
)
)
)
) |