找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 570|回复: 8

[编程申请]:编一个画线程序?

[复制链接]
发表于 2005-4-9 10:27:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
在画给定坐标点的直线时,需要通过键盘输入坐标值
。这样的情况下当然是利用右边的数字键盘输入较为方便
。但若直接使用AutoCAD的pLine命令画直线,在x和y两个
坐标值之间需要输入一个逗号“,”作为分隔,而数字键
盘区又没有该逗号,所以仍然不方便。能否编一个直线程序只要求用户输入坐标值,
而由程序自动调用pLine命令画出直线,并能提示第一点、第二点.......坐标.因此用户不用离开数字键盘区就能完成工作。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-4-9 10:47:06 | 显示全部楼层
[PHP]
(defun c:test ()
  (setq roop T)
  (command "pline")
  (while roop
    (setq str (getstring "\n输入坐标,格式为(x/y): "))
    (if        (/= str "")
      (progn
        (setq n (vl-string-position (ascii "/") str))
        (if (/= n nil)
          (progn
            (setq p1
                   (list (atof (substr str 1 n)) (atof (substr str (+ n 2))))
            )
            (command p1)
          )
          (prompt "\n输入的坐标格式不正确,请重新输入!")
        )       
      )
      (setq roop nil)
    )
  )
  (command "")
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-9 11:19:30 | 显示全部楼层
你这样不是更麻烦,还要输入“/”,而我只需输入x y 即可,不用输入","
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-9 11:39:08 | 显示全部楼层
最初由 xxming 发布
[B]你这样不是更麻烦,还要输入“/”,而我只需输入x y 即可,不用输入"," [/B]


如果只输入x y,怎么来区分这两个数值,两个数连在一起是不可能的,所以只能用一个符号来分开,小键盘没有“,”键,但“/”键总有吧。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-9 15:34:47 | 显示全部楼层
自已编了一个,大家修改修改
(defun c:xlin()
  (setvar "cmdecho" 0)
  (command "pline")
  (setq roop t)
  (setq j 0)
  (while roop
  (princ (strcat "第" (rtos(setq j (1+ j))) "点坐标"))
  (setq x (getreal "\nENTER X: "))
  (setq y (getreal "\nENTER Y: "))
  (command (list x y))
  (if (and (= x nil) (= y nil))
    (exit)
  )
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-9 15:50:38 | 显示全部楼层
如果输入的X、Y值非空,程序运行会正常,但如果空输入,则程序会出错。
这句(if ....)
应该加在command之前进行判断
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-9 16:39:10 | 显示全部楼层
楼上:但是该怎么闭合呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-9 16:59:00 | 显示全部楼层
最初由 xxming 发布
[B]自已编了一个,大家修改修改
(defun c:xlin()
  (setvar "cmdecho" 0)
  (command "pline")
  (setq roop t)
  (setq j 0)
  (while roop
  (princ (strcat "第" (rtos(setq j (1+ j))) "点坐标"))
  (setq ... [/B]


试试:
[php]
(defun c:test ()
  (princ "第1点坐标")
  (setq        x (getreal "\nX坐标 : ")
        y (getreal "\nY坐标<退出> : ")
        j 1
  )  
  (command "pline")
  (while (and x y)
    (command (list x y))
    (princ "\n")
    (princ (strcat "第" (rtos (setq j (1+ j))) "点坐标"))
    (setq x (getreal "\nX坐标<退出> : "))
    (if        x
      (setq y (getreal "\nY坐标<退出> : "))
    )
  )
  (command "")
  (princ)
)
[/php]
最好先将点坐标生成一个文件(如 .txt)然后用程序直接读取,便于检查和更改。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-9 17:05:52 | 显示全部楼层
xyp1964 斑竹 谢谢你出手就是不一样,能否在程序中加入“回退”功能谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 02:32 , Processed in 0.418642 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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