乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 45|回复: 3

[编程交流] 复制Dist命令

[复制链接]

10

主题

29

帖子

21

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
68
发表于 2022-7-6 15:12:17 | 显示全部楼层 |阅读模式
这件事让我抓狂,所以我希望这里的人能给我一个解决方案。
 
我在这里使用lisp例程来标注管道尺寸。
 
基本上,程序会提示用户选择两个点。然后,它计算这两个点之间的距离,并在两个初始点之间插入一个具有在中心点格式化尺寸的块。然后,程序将第二个点保存为第一个点,然后循环并要求另一个点进行标注。
 
问题是,我希望程序在第一个点和光标之间绘制一条重影(“抖动”)线,同时用户决定下一个要拾取的点(就像dist命令一样)。
 
这是症结所在:
 
我知道getdistance函数通常会为我处理这个问题,但我认为我无法使用它。相反,我调用了两次getpoint函数,然后使用距离函数计算两点之间的距离。我必须这样做的原因是允许程序执行我之前描述的循环。我需要将输入的第二个点保存为第一个点,以便程序可以在接近开始的地方循环,并请求新的第二个点。getdistance函数只返回一个数字,而不是一个点,因此使用getdistance函数可以防止我需要的循环功能。
 
下面是一些针对ya的伪ish代码(实际程序大约有250行):
 
(setq点1(getpoint“选择点”))
(而(=1 1)
(setq点2(getpoint“选择另一个点”))
(setq长度(距离点1点2))
(InsertBlockWithLengthBetweenPoints)
(setq点1点2)
);虽然
 
你可以看到,如果我使用getdistance函数,我将无法在漂亮的无限while循环中循环。
 
我曾想过做一些复杂的事情,比如使用grdraw和grread或grvecs来创建重影线,但我不能很好地做到这一点,因为这些函数有点难以使用。也许有一个我不知道的可视化lisp函数可以帮我解决这个问题?
 
有什么想法吗?
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-6 15:48:37 | 显示全部楼层
大概
  1. (setq point2 (getpoint "select another point" point1)
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 15:57:27 | 显示全部楼层
像这样的?
  1. (defun c:test(/ p1 p2)
  2. (setvar "errno" 0) ; must pre set the errno to 0
  3. (setq  p1 nil)              
  4. (while
  5.    (cond
  6.      ((null p1)
  7.       (setq p1 (getpoint "\nSelect first point."))
  8.      )
  9.      ((= (getvar "errno") 52) ; exit if user pressed ENTER
  10.       nil ; exit loop
  11.      )
  12.      ((setq p2 (getpoint p1 "\nSelect next point."))
  13.       ;;  do you block insert
  14.       (setq p1 p2)
  15.      )
  16.    )
  17. )
  18. (princ)
  19. )
回复

使用道具 举报

10

主题

29

帖子

21

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
68
发表于 2022-7-6 16:20:26 | 显示全部楼层
哈!当然我完全忘记了你可以这样指定一个基点。
 
谢谢大家的简单回答!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 19:35 , Processed in 0.520405 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表