明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3314|回复: 4

求助:如何在编程中调用pline时,由用户从绘图空间自由输入点位和点数。

[复制链接]
发表于 2011-12-25 18:38 | 显示全部楼层 |阅读模式
在用lisp进行二次开发时,就是让用户从cad模型空间中自由选择点,不管用户输入几个点,都能用pline来实现画一条线。然后我们某个特定参数结束输入,再用setq 获取该多线段,进行下一步工作。这是明经群圣诞节大家的讨论,不太成功,请高手出招!
(setq pt "getpoint")
(command "pline")
(while (\= pt NIL)
  (command pt)
  (setq pt NIL)
  (setq pt (getpoint))
)
(command "")
(setq e1(entlast))

 楼主| 发表于 2011-12-25 20:02 | 显示全部楼层
本帖最后由 野狼谷/〈M〉 于 2011-12-25 20:05 编辑

在明经编程群里大虾们的帮助下,问题解决了,利用先生成多个line,然后转成pline的方式。虽然有点绕,毕竟实现了这个功能,特别要感谢 [mmh1]漫步地球 的帮助!

(defun c:e2 ()
  (setq p1 (getpoint "\n请输入起点:"))
  (setq p2 (getpoint "\n请输入下一点:"))
  (command "line" p1 p2 "")
  (setq p1 p2)
  (setq p3 (ssadd))
  (setq p3 (ssadd (entlast) p3))


  (while (/= p2 nil)
    (setq p2 (getpoint "\n请输入下一点:"))
    (if        (/= p2 nil)
      (progn (command "line" p1 p2 "")
             (setq p3 (ssadd (entlast) p3))
             (setq p1 p2)
      )
    )
  )
  (command "pedit" "m" p3 "" "y" "j" 0 "")

  (prinC "\N 线条绘制成功!")
)
发表于 2011-12-25 20:18 | 显示全部楼层
1.也可以循环生成pline再取刚才生成的pline所有点再重新绘制
(vla-get-Coordinates Object index)
(vla-put-Coordinates Object index Value)
2.反应器

点评

困难主要是pline命令在调用时,结束点不好控制,你这两条有使用例子吗?给提供一下能清楚点,谢谢!  发表于 2011-12-25 21:41
发表于 2011-12-26 10:13 | 显示全部楼层
反应器 commandend 处理pline命令获取结束
发表于 2011-12-26 10:33 | 显示全部楼层
未能掌握楼主意向,且试

(command "pline")
(while
  (and
    (= (logand (getvar "CmdActive") 1) 1)
    (验证 特定参数结束输入吗?)
  )
  (command pause)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 07:01 , Processed in 0.223856 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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