乐筑天下

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

[编程交流] 两者的区别是什么

[复制链接]

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 23:17:06 | 显示全部楼层 |阅读模式
我看到有时在SSGET中使用INSERT,有时使用BLOCK来捕获块。这两者与它需要使用的任何特定应用程序有什么区别?
 
请导游。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:23:46 | 显示全部楼层
块是块的定义,而插入是实例(即它在图形中的插入)实体。
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 23:28:50 | 显示全部楼层
米尔恰,
 
我不确定我是否理解你解释的内容。我的英语不好应该受到责备
  1. (tblsearch "BLOCK" "SW_TABLEANNOTATION_0")
  2. (setq swbom (ssget "_x" '((0 . "INSERT")(2 . "SW_TABLEANNOTATION_0"))))

 
你能解释一下吗?Tblsearch使用BLOCK,SSGET使用INSERT?这个可以切换并且仍然是一样的吗?
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:33:51 | 显示全部楼层
不是Msasu,但我想我可以为你回答这个问题。
 
每个块都有一个定义和一个参考。
块定义是图形文件块名中的定义。DWG,假设块名插入到空白图形中,则如果要在每次新插入块名时反映出所做的更改,您将修改它。
 
如果将此新块定义“BLOCKNAME”插入到已具有块“BLOCKNAME”的图形中,但在修改之前,由于图形中当前存在的定义,新插入的“BLOCKNAME”将显示为旧的“BLOCKNAME”。该定义是在您对块进行更改之前将其放置在那里存储的,换句话说:第一次插入该块时,除非另有说明,否则图形认为所有这些块的外观都是这样的。以下是您的做法:
 
您要做的只是确保所有相应的块参照都已从dwg中删除,通常通过清除方法完成。一旦不再引用BLOCKNAME,您可以插入新的“BLOCKNAME”定义,块现在将以图形方式显示为“BLOCKNAME”图形文件中的定义,因为图形中仍然没有对旧块名的引用来阻止其拾取新更改。
 
通过编程方式,在命令行中,您可以清除前面提到的所有内容以解决此问题,但也可以使用lisp的形式:
 
BlockNEW是BlockOLD修改的,好吗?
你有一个现有的block,你刚刚做了一些更改,所以现在你有BlockOLD和BlockNEW。
在空白图形中插入BlockNEW时,效果良好。
将BlockNEW插入到已放入BlockOLD的图形中(并且可见或不可见地驻留在dwg数据库中,这就是为什么使用清除)时,BlockNEW将显示为BlockOLD,因为该图形中的引用尚未更新。
为此,可以使用以下lisp命令:
  1. (command "insert" "BlockOLD=BlockNEW")

键入的内容与此完全相同,其中BlockOLD位于图形中,而BlockNEW位于autocad搜索路径中的标准目录中。
显然,BlockOLD和BlockNEW是我用的变量名,如果需要这一点信息,那么lisping可能不是阅读本文的人往下读的正确途径,但我添加这句话只是为了确保任何阅读本文的人在我说“完全像那样”时都不会接受我的专业知识。我的意思当然是用括号、引号和等号。
 
如果您有任务,例如,在25个新图形中插入BlockNEW。。。。。在你将BlockNEW插入第一个空白图形,然后意识到你在线型、图层或其他方面搞砸了。。。
您可以对块定义进行更改,保存它们,然后返回到第一个空白图形,这就是您更新BlockNEW以反映刚刚修复的更改的方式。
方法一是清除。。。。擦除块,然后清除它。再次插入BlockNEW后,它看起来应该是这样的(只需更改线型、图层等)
或者,可以使用lisp更新块参照,方法是使用类似的代码行。
  1. (command "insert" "BlockNEW=")

就这样。它将通过重新定义其引用将旧块更新为新块。
 
HTH和足够清晰和正确,值得一试。
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-5 23:38:56 | 显示全部楼层
在我的回复中,我没有触及TBLSEARCH,因为我认为Msasu会来为我们澄清它,以及它如何与定义和引用相关。
一、 e.我认为,因为TBLSEARCH通过字典进行搜索,字典包含在每个单独的图形中,所以TBLSEARCH将定位引用,而不是定义。
但我认为,Msasu会最好地解释,或者另一位大师。只是想帮助一些人。
回复

使用道具 举报

1

主题

116

帖子

115

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:43:01 | 显示全部楼层
当您想要访问定义而不是图形中的插入引用时,可以使用tblsearch(或者tblnext或tblobjname)。
“BLOCK”只是表的名称。还有其他几个表格用于线型、图层、文字样式等。
这可能有助于。。。http://www.afralisp.net/autolisp/tutorials/into-the-database.php或请参阅Autodesk的《DXF参考指南》。这些将帮助您了解表的结构和访问方式。
 
相反,正如Brandon和Mircea所解释的那样,插入是指图纸中块的参考。
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-5 23:49:37 | 显示全部楼层
Mircea、Brandon和Clint,
 
非常感谢你的帮助。
 
我还有一个关于AND和NOT的问题。在代码#1中,仅使用一次,而不是每行使用一次。为什么我不能按照代码#2来做,其中不包括所有3行。我问这个问题是因为我为我的一个任务编写了代码#2,但它不起作用,但仍然不确定为什么它不起作用。
 
代码#1
  1. (if (and   
  2.        (tblsearch "LAYER" "AM_0")
  3.        (tblsearch "LAYER" "AM_3")
  4.        (tblsearch "LAYER" "AM_7")
  5.       (not (tblsearch "LAYER" "FORMAT"))
  6.       (not (tblsearch "LAYER" "OBJECT_LINE"))
  7.       (not (tblsearch "LAYER" "PHANTOM"))
  8.     )
  9. (progn...

 
代码#2
  1. (if (and   
  2.        (tblsearch "LAYER" "AM_0")
  3.        (tblsearch "LAYER" "AM_3")
  4.        (tblsearch "LAYER" "AM_7")
  5.      
  6.       
  7.       (not (tblsearch "LAYER" "FORMAT")
  8.              (tblsearch "LAYER" "OBJECT_LINE")
  9.              (tblsearch "LAYER" "PHANTOM")
  10.       )  
  11.     )
  12. (progn...
回复

使用道具 举报

1

主题

116

帖子

115

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:55:29 | 显示全部楼层
“not”函数只接受一个参数,而不是三个。在发布的代码中,它正在检查三个层中的每一个都不存在。因此它寻找第一个,如果它不在那里,它将返回nil,'not函数将其计算为T,然后处理转到下一行。如果存在,它将返回一个列表,'not函数将其计算为nil。如果发生这种情况,则'和函数的评估结束。
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:01:52 | 显示全部楼层
 
如果三条线合并在一条线上,这有关系吗?这样地。。。
 
  1. (not (tblsearch "LAYER" "FORMAT") (tblsearch "LAYER" "OBJECT_LINE") (....) )

还有什么替代方法可以一次验证,而不是三行验证?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:02:48 | 显示全部楼层
您应该使用允许多个参数的函数,因为NOT只接受一个参数:
  1. (not [color=red](and [/color](tblsearch "LAYER" "FORMAT")
  2.          (tblsearch "LAYER" "OBJECT_LINE")
  3.          (tblsearch "LAYER" "PHANTOM")[color=red])[/color])
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:10 , Processed in 0.551685 second(s), 72 queries .

© 2020-2025 乐筑天下

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