nyistjz 发表于 2023-3-30 17:24:16

撑开面积区域

本帖最后由 nyistjz 于 2023-3-30 23:43 编辑

画区域的时候,有没有办法像这个样子把区域撑开,而不是画直线再闭合


有点类似wipeout这个命令画区域覆盖一样


nyistjz 发表于 2023-3-31 09:08:26

(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))
)

曲线救国,呵呵

liuhe 发表于 2023-3-30 17:57:16

带动画的 用grread都的想办法怎么精准捕捉点。如果不需要精准捕捉点,实现问题都不大

cable2004 发表于 2023-3-30 19:34:47

本帖最后由 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)


革天明 发表于 2023-3-30 21:50:57

有,之前就实现过类似的效果

nyistjz 发表于 2023-3-30 23:42:13

cable2004 发表于 2023-3-30 19:34
如果只是直线边界,可以用grdraw 提前显示。




你这个试了一下,无法正常运行,不及好使。
也有可能是我操作不正确

cable2004 发表于 2023-3-31 07:15:18

本帖最后由 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))))
)
)

annihilation 发表于 2023-3-31 23:31:42

http://bbs.mjtd.com/thread-111768-1-1.html

nyistjz 发表于 2023-4-1 08:40:18

本帖最后由 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]
查看完整版本: 撑开面积区域