乐筑天下

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

[编程交流] 救命啊!我真的很接近XL码

[复制链接]

1

主题

1

帖子

0

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:56:20 | 显示全部楼层 |阅读模式
因此,在互联网的帮助下,我创建了一个XLine函数,当我键入XV或XH时,它会在Defpoints层上放置一条垂直或水平XLine,然后自动切换回XH/XV函数之前的层。
 
问题是,当我放置第一条XLine时,当我放置第二条XLine时,函数完成了它的工作,并返回到我之前所在的层。如何使函数保持在Defpoints上,直到你点击ESC,然后它返回到原始层?
 
谢谢
 
到目前为止我拥有的
 
  1. (defun c: xv()(command "._xline" "_v")(princ))
  2. (defun c: xh()(command "._xline" "_h")(princ))
  3. (defun c: xh (/ p1 p2)
  4. (setq cl (getvar "clayer"))
  5. (command "-layer" "s" "defpoints" "")
  6. (command "xline""_h")(princ)
  7. (setvar "clayer" cl)
  8. );defun
  9. (defun c: xv (/ p1 p2)
  10. (setq cl (getvar "clayer"))
  11. (command "-layer" "s" "defpoints" "")
  12. (command "xline""_v")(princ)
  13. (setvar "clayer" cl)
  14. );defun
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 07:32:36 | 显示全部楼层
请阅读代码发布指南并编辑您的帖子,将您的代码包含在代码标签中。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:53:44 | 显示全部楼层
这是一个正确的方向:
 
  1. (defun c:xh ( / cl )
  2.    (setq cl (getvar 'clayer))
  3.    (command "_.-layer" "_M" "defpoints" "" "_.xline" "_H")
  4.    (while (< 0 (getvar 'cmdactive)) (vl-cmdf "\"))
  5.    (setvar 'clayer cl)
  6.    (princ)
  7. )
回复

使用道具 举报

8

主题

38

帖子

25

银币

初来乍到

Rank: 1

铜币
47
发表于 2022-7-6 08:00:04 | 显示全部楼层
如果您创建XLINE而不是编写命令脚本,那么您的问题就不会存在。使用entmake创建实体,只需将组码8指定为“defpoints”,这就是创建层并将实体放置在该层中所需的全部内容。
我引用了我的书AutoCAD专家的Visual LISP:
使用entmake,您可以编写如下命令:
考虑到XLINE的组码10应该在WCS中,应该修改我之前发布的这个函数。
如果UCS与WCS不一致,则应考虑这一点。
此外,为了再现实际的连接线行为,方向向量还应取决于当前UCS,可以从UCSXDIR和UCSYDIR系统变量中获得。
代码应该是这样的:
更多信息请访问我的博客:lispexpert。blogspot。通用域名格式
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 10:24 , Processed in 0.682104 second(s), 60 queries .

© 2020-2025 乐筑天下

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