乐筑天下

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

[编程交流] 检查是否存在对象或形状

[复制链接]

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 20:26:36 | 显示全部楼层 |阅读模式
在示例中,我有一个名为“picket”的对象,我想检查是否有这些picket,然后需要将它们放入一个具有实体名称的列表中。如何使用vlax ldata put执行此操作。把这些数据放入数据库?
所有工作函数都是这样的。。我在命令输入中键入命令(所有_数据),并在autocad内存中键入所需的数据保存,然后在控制台中,我可以使用命令vlax ldata list进行检查
 
  1. (defun c:tinklolinija (/ test pradzios_taskas)
  2. (vl-load-com)
  3. (while
  4. (if (tblsearch "block" "Piketas")
  5. (princ "\nBlock Piketas not found.")
  6. )
  7. )
  8. (princ)
  9. )

212638dgq8xb4olt4hw4lf.jpg
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 20:32:53 | 显示全部楼层
有人帮忙吗?如何获取实体名称?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:36:33 | 显示全部楼层
查看如何使用SSGET和过滤器,您可以搜索名为picket的块。
  1. (setq ss (ssget "X" (list (cons 0 "Insert")(cons 2 "Picket"))))
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 20:41:20 | 显示全部楼层
我编写了在alertbox中打印计数对象名称的代码,但它不显示实体名称。。我错过了什么?
  1. (defun c:bcount ( / p1 b a n obj name)
  2. (setq p1 (getstring "\Name of Block : "))
  3. ;get the name of the block
  4. (setq b (cons 2 p1))
  5. ;construct a dotted pair - code 2 is for blocks
  6. (setq a (ssget "x" (list b)))
  7. ;filter for the block name
  8.      (progn
  9.     )
  10. (if (/= a nil)
  11. ;check if there are any blocks of that name
  12.    (progn
  13.    ;if there is…
  14.         (setq n (sslength a))
  15.     (setq ent (entlast a))
  16.         ;count the number of blocks
  17.         (alert (strcat "\nThere are " (itoa n)  " in the DataBase. Enity: " (itoa ent) ))
  18.    
  19.         ;display the result
  20.    );progn
  21.    ;if there are no blocks
  22.         (alert "\nThere are none in the DataBase")
  23.         ;inform the user
  24. );if
  25.   (princ)
  26. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:49:31 | 显示全部楼层
实体名称需要显示什么?
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 20:52:42 | 显示全部楼层
在这种情况下,块的名称并不是我所需要的全部,但现在它很复杂。。嗯,我需要另一种方法来获取块名实体。有并没有办法使用vlax ldata put将ta实体名放入数据库来检查块的确切名称是否存在?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:58:41 | 显示全部楼层
看我的帖子,用p1替换“纠察队”
 
此外,“\名称应为”\n名称表示新行。
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 21:01:14 | 显示全部楼层
我注意到了现有名称与显示选择集和一些数字的不同,p1返回零
回复

使用道具 举报

4

主题

68

帖子

69

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 21:07:51 | 显示全部楼层
此示例将显示选定对象的实体名称和vla对象名称:
  1. (vl-load-com)
  2. (setq entity
  3.       (car
  4.     (entsel "\nSelect Item: ")    ; select item
  5.       )
  6. )
  7. (if entity                ; check if something selected
  8. (progn                ; if so, do some stuff
  9.    (princ (strcat "\nEntity is a: "    ; combine some strings
  10.           (vl-princ-to-string (type entity))
  11.                    ; convert type-output to string
  12.       )
  13.    )
  14.    (princ (strcat "\nThe entity name is: "
  15.           (vl-princ-to-string entity)
  16.       )
  17.    )
  18. )
  19. )
  20. (princ "\nAnd now VLA-data:")
  21. (setq a-vla-object
  22.       (vlax-ename->vla-object entity)    ; convert a ename to a vla-object
  23. )
  24. (princ
  25. (strcat "\nVLA-Entity: " (vl-princ-to-string a-vla-object))
  26. )
回复

使用道具 举报

3

主题

12

帖子

9

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 21:08:59 | 显示全部楼层
没关系,我看到它得到了实体名,但对我来说,仍然需要这些实体名计数并写入数据库。没有使用entsel函数,我的意思是自动。。当您按comman line中的function时
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:02 , Processed in 0.433616 second(s), 75 queries .

© 2020-2025 乐筑天下

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