撑开面积区域
本帖最后由 nyistjz 于 2023-3-30 23:43 编辑画区域的时候,有没有办法像这个样子把区域撑开,而不是画直线再闭合
有点类似wipeout这个命令画区域覆盖一样
(defun c:tt(/ ent)
(command "wipeout")
(while (= 1 (getvar "cmdactive")) (command pause))
(setvar "qaflags" 1)
(command "explode" (entlast) "")
(setvar "peditaccept" 1)
(command "pedit" "m" (ssget "p") "" "J" 1 "")
(setq ent (entlast))
(sssetfirst nil (ssadd ent))
)
曲线救国,呵呵 带动画的 用grread都的想办法怎么精准捕捉点。如果不需要精准捕捉点,实现问题都不大 本帖最后由 cable2004 于 2023-3-30 19:44 编辑
如果只是直线边界,可以用grdraw 提前显示。
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq p1 (GETPOINT))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(while (progn
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (setq gr (grread 7 2))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (setq p2 (cadr gr))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (GRDRAW p1 p2 1)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (if pt_tmp
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (GRDRAW p1 pt_tmp 0)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (setq pt_tmp p2)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
有,之前就实现过类似的效果 cable2004 发表于 2023-3-30 19:34
如果只是直线边界,可以用grdraw 提前显示。
你这个试了一下,无法正常运行,不及好使。
也有可能是我操作不正确 本帖最后由 cable2004 于 2023-3-31 07:16 编辑
nyistjz 发表于 2023-3-30 23:42
你这个试了一下,无法正常运行,不及好使。
也有可能是我操作不正确好久不写lisp了,语法函数都忘记了。
(defun c:tt()
(setq lst nil)
(setq p1 (GETPOINT))
(setq lst (cons p1 lst ))
(while(setq p1 (GETPOINT))
(redraw)
(setq lst (cons p1 lst ))
(mapcar '(lambda (x y)(GRDRAW x y 2))lst (append (cdr lst) (list (car lst))))
)
)
http://bbs.mjtd.com/thread-111768-1-1.html 本帖最后由 nyistjz 于 2023-4-1 13:57 编辑
annihilation 发表于 2023-3-31 23:31
http://bbs.mjtd.com/thread-111768-1-1.html
下面这个方法十分nice,可惜不能捕捉,有瑕疵,相对而言,前面我那个变通的方法目前来看还是可以的。
;;[功能] 画封闭多边形----------脱了裤子放屁
(defun C:w1 (/ PTS)
(cond ((setq pts (HH::getPoints)) (MakeXLWPOLYLINE pts)))
)
;;[功能] 取点函数
(defun HH::getPoints (/ CODE FLAG P0 PT PT1 X Y)
(while (and (setq code (grread T 8)) (or (= (car code) 3) (= (car code) 5)))
(cond ((= (car code) 3) (setq pt (cons (cadr code) pt))))
(redraw)
(cond
((> (length pt) 1)
(setq pt1 (cons (cadr code) pt))
(setq pt1 (cons p0 pt1))
(mapcar '(lambda (x y) (grdraw x y 1)) pt1 (cdr pt1))
)
((equal (length pt) 1) (setq p0 (car pt)) (grdraw p0 (cadr code) 1))
(T
(cond ((not Flag) (setq Flag T) (princ "\n 点取起点")))
)
)
)
(redraw)
(cond ((> (length pt) 2) (reverse pt)))
)
;;http://bbs.xdcad.net/thread-673261-1-1.html
;;167.3 [功能] Entmake点表生成多段线
(defun MakeXLWPOLYLINE (lst / PT)
(entmakeX
(append
(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
(cons 90 (length lst))
'(70 . 1)
)
(mapcar '(lambda (pt) (cons 10 pt)) lst)
)
)
)
页:
[1]