乐筑天下

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

[编程交流] 断开命令列表创建

[复制链接]

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 07:10:27 | 显示全部楼层
谢谢你在这方面的帮助,但大部分都是我的事。我对VLISP函数名一点也不熟悉。我的老派Lisp程序理解力不强。我只是尝试设置在Break命令后创建的dwg数据库中的最后(2)两个实体。我不知道ENTNEXT是怎么工作的。下面是我最基本的代码,是为了测试我是否能捕捉到最后两个对象。。。
 
  1. (defun C:TEST (/)
  2.    (setq ent (entsel "\n Select line..."))
  3.    (setq enta (entnext))
  4.      (prompt "\n Select break point...")
  5.      (setq p1 (getpoint))
  6.      (command "break" ent "f" p1 p1 "")
  7.    (setq entb (entnext enta))
  8.    (command "erase" enta "")
  9.    (command "erase" entb "")
  10. )

 
我知道它不起作用。但为什么不。。。?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:15:56 | 显示全部楼层
一旦break将线条一分为二,您将拥有一个新对象,而不是两个。您的ent将是第一个对象,您可以使用(entlast)获得第二个对象。
 
看看这个:
 
 
  1. (if (and (setq pnt (getpoint "\nSpecify point at which to break line: "))
  2.         (setq ss (ssget pnt '((0 . "LINE"))))
  3.    )
  4. (progn (setq ent (ssname ss 0))
  5.         (command "_.break" ent "_F" "_non" pnt "_non" pnt)
  6.         (setq ent2 (entlast))
  7. )
  8. )
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 07:18:55 | 显示全部楼层
嗨,艾伦,
很抱歉让这件事继续下去,但是。。
1、为什么使用Progn?是因为ssname吗?如果将0设置为1会怎么样?
2.如何创建包含ENT和ENT2的新列表?我有一个加长的例程正在工作,我想在这两行的新列表上运行它。
3.Lengthen命令在LISP中工作的唯一方式是向其传递实体名称。所以我需要使用SETQ为ENT和ENT2命名。
 
迈克
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:21:06 | 显示全部楼层
 
因为,如果if(带有getpoint和ssget的有效点选择一条线)的两个参数都满足,那么我需要它评估那里的所有内容,而不仅仅是一件事。PROGN将所有内容包装在一起,因此我可以在一个IF语句中使用它。
2&3. 如果要将这两行输入LENGTHEN命令,则必须执行两次LENGTHEN。每个变量(ent和ent2)一次。
 
不要担心这些问题。每个人都在这里学习和/或帮助。
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 07:25:02 | 显示全部楼层
艾伦,
有没有办法在Break命令之前设置某种标记,然后捕获添加到dwg数据库的下(2)两个实体(ENT和ENT2)?
 
迈克
 
 
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:28:05 | 显示全部楼层
 
你不必那么做。使用break命令拆分对象时,两个图元中的一个相同(只是较短),另一个是图形中最新创建的对象(entlast)。没有必要再往前走了。我上面的代码将打断并换行,并为您提供这两部分(ent和ent2)。
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 07:29:49 | 显示全部楼层
下午好,艾伦,
这是我最好的尝试。我想我有点不对劲。你怎么认为?
 
[code]5)
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 07:34:15 | 显示全部楼层
做得好!取出entsel线。你不需要它。Ssget使用xy from getpoint选择直线。
 
我在离开办公室之前写了这封信,但想让你自己试试。数字可能不正确,但您可以更改它。我星期一回来。实际上,我是在路上用手机发帖的。
 
  1. 6
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 07:36:29 | 显示全部楼层
你好,艾伦,
我已经完成了我的“加长”代码,但仍停留在另一个例程上。
它运行良好,但接近尾声时,我得到了这个。。。
 
椽布局起点:
要运行的角椽:未知命令“CLNGIT”。按F1键获取帮助。
未知命令“CLNGIT”。按F1键获取帮助。
未知命令“CLNGIT”。按F1键获取帮助。

 
我不知道回报来自哪里。
这是完整的代码。尽量不要哭。我知道它远没有你的编码能力那么复杂
 
 
让我知道你的想法。
再次感谢您的专业知识。
Mike在BigD
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:47 , Processed in 0.707978 second(s), 68 queries .

© 2020-2025 乐筑天下

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