乐筑天下

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

[编程交流] Autolisp函数产生不同的

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:40:51 | 显示全部楼层 |阅读模式
问题的根源是辅助函数drawportsegment:
  1. (defun drawportsegment (loc portspacing / portw porth test)
  2. (setq
  3.         portw 2.0
  4.         porth 1.0)
  5. (command "rectangle"
  6.         (list (- (car loc) (/ portw 2.0)) (cadr loc) 0.0)
  7.         (list (+ (car loc) (/ portw 2.0)) (- (cadr loc) porth) 0.0))
  8. (command "line"
  9.         (list (car loc) (- (cadr loc) porth) 0.0)
  10.         (list (car loc) (- (cadr loc) portspacing) 0.0)
  11.         "")
  12. )

由于是相关信息,我编写的与drawportsegment接口的测试函数是testdps:
  1. (defun c:testdps (/ loc portspacing)
  2. (setq
  3.         loc (getpoint "\nwhere?")
  4.         portspacing 2.0)
  5. (drawportsegment loc portspacing))

以下是该功能在屏幕上运行与在屏幕下运行的直接比较:
 

                               
登录/注册后可看大图

 
我不理解为什么会生成图A,因为从代码来看,我认为总是会生成图B。
 
感谢所有帮助!
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:55:38 | 显示全部楼层
  1. (setvar 'osmode 0)
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 20:11:02 | 显示全部楼层
解释:当对象在屏幕上时,OSNAP处于活动状态,如果您获取当前osmode并将其设置为变量,然后在程序运行时将osmode更改为0,那么它将不会捕捉到对象,然后将其恢复到原来的状态。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:20:32 | 显示全部楼层
它成功了-谢谢!
回复

使用道具 举报

12

主题

395

帖子

384

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 20:39:28 | 显示全部楼层
没问题
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:44:27 | 显示全部楼层
有一个建议是,在许多情况下,osmode的更改非常常见。
 
  1. (setq oldsnap (getvar 'osmode))
  2. (setvar 'osmode 0)
  3. ....
  4. your code
  5. ...
  6. (setvar 'osmode oldsnap)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 00:58 , Processed in 0.469198 second(s), 68 queries .

© 2020-2025 乐筑天下

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