明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索

[提问] 求助:求在已有多义线上接着画的代码

[复制链接]
发表于 2014-1-4 15:37 | 显示全部楼层
  1. (defun c:tt (/ ss obj end_pt pt c_flag n ch_start ch_close ch_open)
  2.   (vl-load-com)
  3.   (if (setq ss (ssget ":E:S" '((0 . "LWPOLYLINE"))))
  4.     (progn
  5.       (sssetfirst nil ss)
  6.       (setq obj (vlax-ename->vla-object (ssname ss 0))
  7.             ch_close nil
  8.             ch_start nil
  9. ;;;            ch_open nil
  10.             )
  11.       (setq end_pt (vlax-curve-getEndPoint OBJ))
  12.       (while (and (not ch_close)
  13.                   (car (list t (initget "S E C O _start end close open" )))
  14.                   (setq pt (getpoint end_pt "\n指定下一点[S从起点开始/E从终点开始/C闭合/O打开]:"))
  15.              ) ;_ end of and
  16.         (cond
  17.           ((= (type pt) 'list)
  18.            (if (vlax-curve-isClosed obj)
  19.              (setq n          (fix (1- (vlax-curve-getendParam obj)))
  20.                    c_flag t
  21.              ) ;_ end of setq
  22.              (setq n          (fix (vlax-curve-getendParam obj))
  23.                    c_flag nil
  24.              ) ;_ end of setq
  25.            ) ;_ end of if
  26.            (if (or ch_start c_flag )
  27.              (progn
  28.                (vla-addvertex
  29.                  obj
  30.                  0
  31.                  (vlax-safearray-fill
  32.                    (vlax-make-safearray vlax-vbDouble '(0 . 1))
  33.                    (list (car pt) (cadr pt))
  34.                  ) ;_ end of vlax-safearray-fill
  35.                ) ;_ end of vla-addvertex
  36.                (setq end_pt (vlax-curve-getStartPoint OBJ))
  37.              ) ;_ end of progn
  38.              (progn
  39.                (vla-addvertex
  40.                  obj
  41.                  (1+ n)
  42.                  (vlax-safearray-fill
  43.                    (vlax-make-safearray vlax-vbDouble '(0 . 1))
  44.                    (list (car pt) (cadr pt))
  45.                  ) ;_ end of vlax-safearray-fill
  46.                ) ;_ end of vla-addvertex
  47.                (setq end_pt (vlax-curve-getEndPoint OBJ))
  48.              ) ;_ end of progn
  49.            ) ;_ end of if
  50.           )
  51.           ((and (= (type pt) 'str)(= pt "start"))
  52.            (setq end_pt (vlax-curve-getStartPoint OBJ))
  53.            (setq ch_start t)
  54.            )
  55.           ((and (= (type pt) 'str)(= pt "end"))
  56.            (setq end_pt (vlax-curve-getEndPoint OBJ))
  57.            (setq ch_start nil)          
  58.            )
  59.           ((and (= (type pt) 'str)(= pt "close"))
  60.            (if (not(vlax-curve-isClosed obj))
  61.              (vla-put-closed obj 1))
  62.            (setq ch_close t)          
  63.            )
  64.           ((and (= (type pt) 'str)(= pt "open"))
  65.            (if (vlax-curve-isClosed obj)
  66.              (vla-put-closed obj 0))
  67. ;;;           (setq ch_open t)          
  68.            )
  69.         ) ;_ end of cond
  70.       ) ;_ end of while
  71.     ) ;_ end of progn
  72.   ) ;_ end of if
  73.   (sssetfirst nil)
  74.   (princ)
  75. ) ;_ end of defun
发表于 2014-1-5 17:56 | 显示全部楼层
顶一个,pline的编辑确实不太方便。
发表于 2014-1-12 21:49 | 显示全部楼层
edata 发表于 2014-1-4 15:37

怎样在自定义ucs下可以使用?
发表于 2014-1-12 22:02 | 显示全部楼层
本帖最后由 edata 于 2014-1-12 22:06 编辑
adc 发表于 2014-1-12 21:49
怎样在自定义ucs下可以使用?

你试试。
  1. (defun c:tt (/ ss obj end_pt pt c_flag n ch_start ch_close ch_open)
  2.   (vl-load-com)
  3.   (if (setq ss (ssget ":E:S" '((0 . "LWPOLYLINE"))))
  4.     (progn
  5.       (sssetfirst nil ss)
  6.       (setq obj (vlax-ename->vla-object (ssname ss 0))
  7.             ch_close nil
  8.             ch_start nil
  9. ;;;            ch_open nil
  10.             )
  11.       (setq end_pt (trans(vlax-curve-getEndPoint OBJ)0 1))
  12.       (while (and (not ch_close)
  13.                   (car (list t (initget "S E C O _start end close open" )))
  14.                   (setq pt (getpoint end_pt "\n指定下一点[S从起点开始/E从终点开始/C闭合/O打开]:"))
  15.              ) ;_ end of and
  16.         (cond
  17.           ((= (type pt) 'list)
  18.      (setq pt(trans pt 1 0))
  19.            (if (vlax-curve-isClosed obj)
  20.              (setq n          (fix (1- (vlax-curve-getendParam obj)))
  21.                    c_flag t
  22.              ) ;_ end of setq
  23.              (setq n          (fix (vlax-curve-getendParam obj))
  24.                    c_flag nil
  25.              ) ;_ end of setq
  26.            ) ;_ end of if
  27.            (if (or ch_start c_flag )
  28.              (progn
  29.                (vla-addvertex
  30.                  obj
  31.                  0
  32.                  (vlax-safearray-fill
  33.                    (vlax-make-safearray vlax-vbDouble '(0 . 1))
  34.                    (list (car pt) (cadr pt))
  35.                  ) ;_ end of vlax-safearray-fill
  36.                ) ;_ end of vla-addvertex
  37.                (setq end_pt (trans(vlax-curve-getStartPoint OBJ)0 1))
  38.              ) ;_ end of progn
  39.              (progn
  40.                (vla-addvertex
  41.                  obj
  42.                  (1+ n)
  43.                  (vlax-safearray-fill
  44.                    (vlax-make-safearray vlax-vbDouble '(0 . 1))
  45.                    (list (car pt) (cadr pt))
  46.                  ) ;_ end of vlax-safearray-fill
  47.                ) ;_ end of vla-addvertex
  48.                (setq end_pt (trans(vlax-curve-getEndPoint OBJ)0 1))
  49.              ) ;_ end of progn
  50.            ) ;_ end of if
  51.           )
  52.           ((and (= (type pt) 'str)(= pt "start"))
  53.            (setq end_pt (trans(vlax-curve-getStartPoint OBJ)0 1))
  54.            (setq ch_start t)
  55.            )
  56.           ((and (= (type pt) 'str)(= pt "end"))
  57.            (setq end_pt (trans(vlax-curve-getEndPoint OBJ)0 1))
  58.            (setq ch_start nil)           
  59.            )
  60.           ((and (= (type pt) 'str)(= pt "close"))
  61.            (if (not(vlax-curve-isClosed obj))
  62.              (vla-put-closed obj 1))
  63.            (setq ch_close t)           
  64.            )
  65.           ((and (= (type pt) 'str)(= pt "open"))
  66.            (if (vlax-curve-isClosed obj)
  67.              (vla-put-closed obj 0))
  68. ;;;           (setq ch_open t)           
  69.            )
  70.         ) ;_ end of cond
  71.       ) ;_ end of while
  72.     ) ;_ end of progn
  73.   ) ;_ end of if
  74.   (sssetfirst nil)
  75.   (princ)
  76. ) ;_ end of defun
发表于 2014-1-12 22:31 | 显示全部楼层
edata 发表于 2014-1-12 22:02
你试试。

非常感谢!!!
发表于 2014-1-13 08:10 | 显示全部楼层
非常实用程序!
发表于 2014-2-3 11:50 | 显示全部楼层
能不能增加画圆滑连接的多义线的弧段的接着画功能啊?谢谢
发表于 2014-2-3 12:47 | 显示全部楼层
  1. ;; 在多段线末尾继续画线;; 需要e派工具箱(XCAD)的支持:[url]http://yunpan.cn/QXQKsW9gAPmpF[/url]
  2. (defun c:tt ()
  3.   (xyp-CMDLA0)
  4.   (if (and (setq s1 (car (entsel "\n选择多段线: ")))
  5.            (xyp-etype s1 "lwpolyline")
  6.       )
  7.     (progn
  8.       (setq n (length (xyp-get-Vertexs s1 0))
  9.             p00 (vlax-curve-getEndPoint s1)
  10.             p0 p00
  11.             ptn '()
  12.       )
  13.       (while (setq p1 (getpoint p0 "\n下一点<退出>: "))
  14.         (setq ptn (cons p1 ptn)
  15.               p0 p1
  16.         )
  17.         (xyp-Grvecs-Ptlst (append ptn (list p00)) 1)
  18.       )
  19.       (foreach pt (mapcar 'xyp-3d2d (reverse ptn))
  20.         (xyp-Add-Vertex s1 n pt)
  21.         (setq n (1+ n))
  22.       )
  23.       (redraw)
  24.     )
  25.   )
  26.   (xyp-CMDLA1)
  27. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-12-27 20:24 来自手机 | 显示全部楼层
清风明月名字 发表于 2013-9-21 09:18
就这样将就解决了这个问题
(defun C:紧接着直线型轻多义线A的后面画A (/ ent PLTYPE obj vtx vtxlst n ptl ...

原多段线有弧怎么办?
发表于 2014-12-28 06:16 | 显示全部楼层
自贡黄明儒 发表于 2014-12-27 20:24
原多段线有弧怎么办?

原多线段有弧倒好办,问题是接着画的时候需要画弧弄起才麻烦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-9 04:22 , Processed in 0.262033 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表