找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1362|回复: 4

[编程申请]:lisp高手请进,哪位能解决这个问题

[复制链接]
发表于 2007-7-13 18:16:02 | 显示全部楼层 |阅读模式

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

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

×
这是一个相当于南方矢量化软件上"线型跟踪"命令中的手动跟踪.



      问题是这样的:

               在描地形图的时候用到样条曲线和多段线,首先指定起点,然后沿着光栅图像描线,从中要不停单击左键指定下一点,不停的按住鼠标中间键将屏幕未显示的部分拖移到中间、如此循环直到描完一根复杂的曲线。

      能否在指定下一点后将刚才指定的点自动移动的屏幕中间,相当于“zoom  c "将刚才指定的点自动缩放到中间。这样的话就只需指定下一点了。

          可是用LISP在执行SPLIE与PLINE时不能同时用“ZOOM”或同时执行多个命令。

那有什么办法实现这功能,或者是同时执行画线时自动移动屏幕。

  同时执行多个命令

                                       谢谢大家
*-*b blue[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-7-14 17:17:00 | 显示全部楼层
:)
在网上找了一下,有个功能类似的函数,可以大致使用一下,
不过还不是很好,在spline的时候不能及时反映曲线,这个问题涉及到在pline里面调用'zoom,应该可以写的更好的。

来源:google 的autolisp讨论区
http://groups.google.com/group/a ... 17#cb9427d8ad609042



  1. ;;;[url]http://groups.google.com/group/autodesk.autocad.customization/browse_thread/thread/2c7be821154011fb/cb9427d8ad609042?lnk=gst&q=pline+%27zoom&rnum=17#cb9427d8ad609042[/url]
  2. ;;;  Jason Wilder            

  3. (defun c:pll( / p1 p2 pset lset)
  4.   (setq lset (ssadd))
  5.   (setq p1 (getpoint "\nStart point: "))
  6.   (setq pset (list p1))
  7.   (setq p2 (getpoint p1 "\nNext point: "))
  8.   (setq pset (cons p2 pset))
  9.   (command "_line" p1 p2 "")
  10.   (ssadd (entlast) lset)
  11.   (command "_pan" p2 p1)
  12.   (while (/= p2 NIL)
  13.     (setq p1 p2)
  14.     (setq p2 (getpoint p1 "\nNext Point: "))
  15.     (if p2 (setq pset (cons p2 pset)))
  16.     (command "_line" p1 p2 "")
  17.     (ssadd (entlast) lset)
  18.     (command "_pan" p2 p1)
  19.   );while
  20.   (command ".erase" lset "")
  21.   (command ".pline")
  22.   (foreach pt pset
  23.     (command pt)
  24.   )
  25.   (command "")
  26. )


  27. (defun c:sll( / p1 p2 pset lset)
  28.   (setq lset (ssadd))
  29.   (setq p1 (getpoint "\nStart point: "))
  30.   (setq pset (list p1))
  31.   (setq p2 (getpoint p1 "\nNext point: "))
  32.   (setq pset (cons p2 pset))
  33.   (command "_line" p1 p2 "")
  34.   (ssadd (entlast) lset)
  35.   (command "_pan" p2 p1)
  36.   (while (/= p2 NIL)
  37.     (setq p1 p2)
  38.     (setq p2 (getpoint p1 "\nNext Point: "))
  39.     (if p2 (setq pset (cons p2 pset)))
  40.     (command "_line" p1 p2 "")
  41.     (ssadd (entlast) lset)
  42.     (command "_pan" p2 p1)
  43.   );while
  44.   (command ".erase" lset "")
  45.   (command ".spline")
  46.   (foreach pt pset
  47.     (command pt)
  48.   )
  49.   (command "")
  50.     (command pause pause "")
  51. );defun  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-10-17 12:48:20 | 显示全部楼层
利用GRREAD自动移屏
左键点下就画线
鼠标移动到边就移屏

一个思路
程序没有
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-18 19:01:08 | 显示全部楼层
二楼的兄弟,你好历害哦!
非常感谢你的代码*-*4 *-*1 *-*b *-*b *-*5
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 04:23 , Processed in 0.408276 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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