乐筑天下

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

[编程交流] 循环不工作时

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:43:31 | 显示全部楼层 |阅读模式
大家好,
 
我需要一些关于AutoLISP脚本的帮助。我在一家装饰公司工作,正在努力简化我们的一些布局程序。
 
我遇到的问题是,当程序进入我的循环时,它不能正常工作。每个循环迭代都应该稍微增加x和y值,就像一个数组一样。阵列在所有迭代中正确循环,但它不会在适当的点中绘制线。例如,一条长度为10000、甲板尺寸为500的线应该有20个迭代,因此20条线像阵列一样布置。它将循环预成形20次,但不会在应该绘制的点处绘制20条线。我已经检查了行值是否正确递增,它们确实是,这一定是因为我使用line命令的方式有问题。
 
我附上了lsp文件和一个带有一些线条的图形,以供选择,以了解我的意思。任何帮助都会很好,我被难住了。
 
甲板线。lsp
甲板试验。图纸
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 10:57:59 | 显示全部楼层
只快速查看了一下代码,但由于您使用(命令)函数绘制线条,请确保禁用了对象捕捉。我的猜测是,正在运行捕捉,并且您正在绘制的线正在捕捉到其他对象,而不是到提供的坐标。
回复

使用道具 举报

10

主题

92

帖子

82

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 11:12:50 | 显示全部楼层
我的程序运行良好。我认为你的问题可能是每条线的绘制方向。在下图中,左边的图中的线是沿同一方向绘制的。右边的一个,一个从右向左画,另一个从左向右画。
 
114335sg1g14dggz1c03d2.png
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:15:13 | 显示全部楼层
谢谢你们的回复,我遇到的问题是OSNAPs——我甚至没有考虑其他问题,但这也是我现在必须解决的问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 11:26:03 | 显示全部楼层
我几乎在每一次Lisp程序的时候都会用到这个
 
  1. (setq oldsnap (getvar "osmode"))
  2. (setvar "osmode" 0)
  3. ;;;at end
  4. (setvar "osmode" oldsnap)
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-6 11:36:57 | 显示全部楼层
 
如果例程在最后一行执行之前结束,最好也有一个错误处理程序,但如果没有,那么应该考虑只关闭对象捕捉,而不是将osmode的值设置为0。这样,如果最后一行从未执行,则不会丢失对象捕捉设置。
 
  1. ;;; example from http://forums.autodesk.com/t5/AutoCAD-2011/Aperture-Box-and-OSMODE/m-p/2673449#M1148
  2. ;;; turns off running snaps
  3. (setvar "OSMODE" (logior (getvar "OSMODE") 16384))
  4. ;;; restores running snaps
  5. (setvar "OSMODE" (logand (getvar "OSMODE") (~ 16384)))
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 11:44:14 | 显示全部楼层
我无法告诉你有多少次我的OSNAP问题困扰了我的Lisp程序(好吧,从技术上来说,恰恰相反……)。起初,我在代码中关闭了它们,但我办公室里有这么多不同的人使用这么多不同版本的AutoCAD,每个版本都根据他们的个人喜好进行调整,更不用说我自己的经验不足了,我的代码中有很多错误,这意味着OSNAP关闭并保持关闭状态。错误处理很好,但我总是忘记将其放入代码中。
 
我的解决方案是:在运行LISP之前将F3混合。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 16:54 , Processed in 0.678988 second(s), 68 queries .

© 2020-2025 乐筑天下

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