乐筑天下

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

[编程交流] 检查实体类型

[复制链接]

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:51:49 | 显示全部楼层 |阅读模式
大家好,
我只是在学习AutoLisp。所以我知道一点。
 
我想写一个程序,从两条线的交点(如果没有相交,当它们被扩展时)画一条线。
 
考虑使用Inters函数,效果很好。但现在我想检查所选实体是否为直线。
怎么做?
我写了这样的东西,但它失败了;
 
  1. (defun c:Intr()
  2.    (Setq Line1 (car (entsel "\nSelect First Line:")))
  3.    (CheckObject Line1)
  4.    BLAH BLAH BLAH.....
  5. )
  6. (defun CheckObject(Enty)
  7. (Setq ObjType(assoc 0 (entget (Enty))))
  8. (if
  9.    (/= ObjType "LINE")
  10.    (
  11.    (alert "No Lines Selected... Ending")
  12.      (exit)
  13.    )
  14. )
  15. )

 
请帮忙。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:04:52 | 显示全部楼层
您还需要检查它是否是一条多段线,并可能将其分解,以便仍然可以对其进行插入。
 
明天将在工作中发布此代码。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:11:31 | 显示全部楼层
看看这个。。。。。。
 
  1. (Setq Line1 (car (entsel "\nSelect First Line:")))
  2. (if (eq (cdr(assoc 0 (entget Line1)))"LINE")
  3. (alert "That's Right")
  4. (alert "I am sorry, That's wrong")
  5. )

 
塔瓦特
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:17:12 | 显示全部楼层
哇!成功了。。。这就是我想要的。
你能告诉我上面的代码哪里出错了吗?
 
此外,如果用户没有选择一条线,我如何重复该步骤,直到他选择一条线?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 10:26:26 | 显示全部楼层
ENTGET将返回一个点对列表;要获得实体的类型,只需使用第二项——在摘录代码中,您试图将列表(虚线对)与字符串进行比较;此外,实体名称不应括在括号中。请在下面找到您更正的代码:
 
  1. (defun CheckObject(Enty)
  2. (Setq ObjType [color=red](cdr[/color] (assoc 0 (entget Enty))[color=red])[/color])[color=red] ;(Enty)))))[/color]
  3. (if
  4.    (/= ObjType "LINE")
  5.    (
  6.    (alert "No Lines Selected... Ending")
  7.      (exit)
  8.    )
  9. )
  10. )

 
当做
米尔恰
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:34:59 | 显示全部楼层
哦我得到了它。。谢谢。。。!!!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:41:30 | 显示全部楼层
这将强制用户只选择一行。。。。
 
  1. (while
  2.    (not
  3.        (and (Setq Line1 (car (entsel "\nSelect First Line:")))
  4.             (eq (cdr (assoc 0 (entget Line1)))"LINE")
  5.       ))
  6. (prompt "\n Please select Line onle !!!")
  7. )
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:44:42 | 显示全部楼层
谢谢tharwat313。。。。
隐马尔可夫模型。。。这就是为什么我最喜欢这个论坛。。。总是有人在短时间内帮助我。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:58:19 | 显示全部楼层
 
随时欢迎你。
 
当做
 
塔瓦特
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:27 , Processed in 0.435394 second(s), 70 queries .

© 2020-2025 乐筑天下

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