乐筑天下

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

[编程交流] 帮助移动维度

[复制链接]

6

主题

17

帖子

11

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 17:57:07 | 显示全部楼层 |阅读模式
我做了这个函数,使用第一个端点、要生成的维度数和DIMSPACE在两个点之间生成相等的维度。
 
它看起来像是这张图片顶部显示的内容。我希望它看起来像图片底部的那个(忽略尺寸在上面而不是在下面)。
 
我可以对我的代码做什么快速的更改来实现这一点。还有其他可以使我的基本代码更简单的更改吗?(不需要)。
 

                               
登录/注册后可看大图

 
代码如下:
 
  1. (defun c:holedim()
  2. (setq oldsnap (getvar "osmode"))
  3. (setq p0 (getpoint "\n pick left endpoint: "))
  4. (setq pfirst (getpoint "\n pick point of the first hole"))
  5. (setq plast (getpoint "\n pick point of the last hole"))
  6. (setq n (getint "Enter number of holes: "))
  7. (setq dimspacingy (getreal "Enter dimspacing value: "))
  8. (setq p0x (car p0))
  9. (setq pfirstx (car pfirst))
  10. (setq plastx (car plast))
  11. (setq p0y (cadr p0))
  12. (setq pfirsty (cadr pfirst))
  13. (setq plasty (cadr plast))
  14. (setq pnx pfirstx)
  15. (setq pny pfirsty)
  16. (setq pn pfirst)
  17. (setq dimoffsetx (/ (- plastx pfirstx) (- n 1.0)))
  18. (setq halfdimoffsetx (/ dimoffsetx 2.0))
  19. (setq dim1x (/ (+ p0x pfirstx) 2.0))
  20. (setq dim1y (+ pfirsty dimspacingy))
  21. (setq dimnx dim1x)
  22. (setq dimny dim1y)
  23. (setq dimn (list dimnx dimny))
  24. (setvar "osmode" 0)
  25. (repeat n
  26.    (command "dimlinear" p0 pn dimn)
  27.    (setq dimnx (+ pnx halfdimoffsetx))
  28.    (setq dimny (+ dimny dimspacingy))
  29.    (setq dimn (list dimnx dimny))
  30.    (setq pnx (+ pnx dimoffsetx))
  31.    (setq pn (list pnx pny))
  32.    )
  33. (setvar "osmode" oldsnap)
  34. (princ)
  35. )
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 18:07:31 | 显示全部楼层
我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
 
您需要阅读代码发布指南,并编辑您的帖子,以将代码包含在代码标签(而不是报价标签)中。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:08:25 | 显示全部楼层
你好
 
阅读此处的极函数并相应修改代码,然后可以检查第一个点和最后一个点之间的角度,并决定与该角度成[+]或[-]90度的角度。
 
祝你好运
回复

使用道具 举报

6

主题

17

帖子

11

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 18:16:33 | 显示全部楼层
 
出于我的目的,我只处理水平面上的线,所以我认为极坐标是不必要的。我更感兴趣的是如何移动维度,然后尝试使代码更简单。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:22:00 | 显示全部楼层
即使你总是在水平面上工作,最好总是有一个动态代码在大多数情况下(如果不是所有情况下)工作。
 
不管怎样,你是在强迫维度一直在Y轴上还是相反的方向,即Y轴?
回复

使用道具 举报

6

主题

17

帖子

11

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 18:29:14 | 显示全部楼层
它可以是我需要的任意一个,这取决于我的DIMSPACE值的符号
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:32:43 | 显示全部楼层
您想给出的可变dimspacing的值是多少,它将重定向尺寸上/下的方向?
你能上传一个带有绘图或图像的示例,展示你创建这两个形状/设计的步骤吗?
回复

使用道具 举报

6

主题

17

帖子

11

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 18:36:10 | 显示全部楼层
首先,我选择测量的最左端点,然后我选择第一个测量点,然后是我需要测量的最后一个点(最右点),然后我输入从第一个测量到最后一个测量的测量数量(本例中为22),然后是y-dimspacing值(在图片中,我使用-1.5表示顶部,1.5表示底部)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:45:10 | 显示全部楼层
我认为如果你考虑负值随维度下降,它应该起作用,而正值通常应该遵循Y轴,没有任何修改。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:47:13 | 显示全部楼层
希望很容易
 
  1. ; pick a dim then move the text and do again copy to command line 1st 2 lines
  2. (setq obj (vlax-ename->vla-object (entlast)))
  3. (Alert (vla-get-textposition obj))
  4. ;(vla-put-textposition obj pt) ; new text pt
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:34 , Processed in 1.037905 second(s), 76 queries .

© 2020-2025 乐筑天下

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