找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

[求助] 原地copy属性块----------总结

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-3 18:04:43 | 显示全部楼层
QiaoCheng 发表于 2013-6-3 17:56
我也是Lispboy害的,弄的现在写一个都要考虑下面的原则
原则有ZZQQXX和Lispboy总结出来的
1 ...

别忘了,还有葛老,LL-J老总结的一些

while 代码不要太多,不必要的放循环外面
......

还有发源码帖,必要时候修改成求助;P
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-3 18:06:19 | 显示全部楼层
还有啊

用 foreach , repeat 改 while 循环,循环里面尽量别判断条件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-3 18:09:12 | 显示全部楼层
QiaoCheng 发表于 2013-6-3 17:56
我也是Lispboy害的,弄的现在写一个都要考虑下面的原则
原则有ZZQQXX和Lispboy总结出来的
1 ...

总结的很好,但是也不要束缚了手脚,还有一个原则,选用最短的代码解决实际问题,不是每个程序要经常用的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-3 18:11:12 | 显示全部楼层
呵呵,又多了几条经验

点评

还有啊,表是LISP的灵魂,灵活的构造参数表,事情就成功了大半。  详情 回复 发表于 2013-6-3 18:17
还有啊,表是LISP的灵魂,灵活的构造参数表,事情就成功了大半。  详情 回复 发表于 2013-6-3 18:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-3 18:17:18 | 显示全部楼层
QiaoCheng 发表于 2013-6-3 18:11
呵呵,又多了几条经验

还有啊,表是LISP的灵魂,灵活的构造参数表,事情就成功了大半。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-3 18:17:49 | 显示全部楼层
QiaoCheng 发表于 2013-6-3 18:11
呵呵,又多了几条经验

还有啊,表是LISP的灵魂,灵活的构造参数表,事情就成功了大半。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-3 18:21:13 | 显示全部楼层
在某些应用中还要巧妙的应用实体的生成顺序构造表,尤其在对一些专业软件生成的图进行二次处理时会事半功倍
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-3 18:22:46 | 显示全部楼层
好像给歪楼了。{:soso_e120:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-6-3 20:32:03 | 显示全部楼层
(vlax-map-Collection (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))) 'vla-copy)

评分

参与人数 1D豆 +3 收起 理由
/db_自贡黄明儒_ + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-6-4 08:17:25 | 显示全部楼层
Lispboy 发表于 2013-6-3 17:24
告诉你个方法,G版前几天的帖子写过,好像。

别用ENTMAKE,也别用VLA-COPY方法。

我用(entmakex (entget (car (entsel))))没有成功呀,到底怎么做的说一说呀,你话到嘴边又咽下了.

点评

entmakex和entmake不同的地方就是,entmakex生成的实体还没 ownerid,就是不属于任何块表容器,需要你把他“放”好,指定它的 父亲是模型空间,还是图纸空间,还是块。 所以,你entmakex 是看不到结果的。因为还  详情 回复 发表于 2013-6-4 09:33
一个晚上没来,论坛很多好帖子啊,刚在看帖子了。 你去看看我以前发过的一个帖子,窗口选择拷贝XREF里面实体的,有 entmakex vla-transform的用法 http://www.xdcad.net/forum/forum.php?mod=redirect&goto=fi  详情 回复 发表于 2013-6-4 09:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-4 09:31:17 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-6-4 08:17
我用(entmakex (entget (car (entsel))))没有成功呀,到底怎么做的说一说呀,你话到嘴边又咽下了.

一个晚上没来,论坛很多好帖子啊,刚在看帖子了。

你去看看我以前发过的一个帖子,窗口选择拷贝XREF里面实体的,有 entmakex vla-transform的用法

http://www.xdcad.net/forum/forum ... 679&pid=3446218
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-4 09:33:57 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-6-4 08:17
我用(entmakex (entget (car (entsel))))没有成功呀,到底怎么做的说一说呀,你话到嘴边又咽下了.

entmakex和entmake不同的地方就是,entmakex生成的实体还没 ownerid,就是不属于任何块表容器,需要你把他“放”好,指定它的 父亲是模型空间,还是图纸空间,还是块。

所以,你entmakex 是看不到结果的。因为还没变成可见的实体。

点评

看了半天,还是没有搞明白,你能不能写一个呀? 下面的办法,但属性丢失了  详情 回复 发表于 2013-6-4 17:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2013-6-4 17:28:53 | 显示全部楼层
Lispboy 发表于 2013-6-4 09:33
entmakex和entmake不同的地方就是,entmakex生成的实体还没 ownerid,就是不属于任何块表容器,需要你把 ...

看了半天,还是没有搞明白,你能不能写一个呀?
下面的办法,但属性丢失了
  1. (defun C:w1 (/ LISTENTITYDXF LISTINSERTPOINT STRBLOCKNAME STRENTITYNAME)
  2.   (defun InsertBlock (strBlockName listInsertPoint floatRotateAngle)
  3.     (entmake (list '(0 . "INSERT")
  4.                    '(100 . "AcDbEntity")
  5.                    '(100 . "AcDbBlockReference")
  6.                    (cons 2 strBlockName)
  7.                    (cons 10 listInsertPoint)
  8.                    (cons 50 floatRotateAngle)
  9.              )
  10.     )
  11.   )
  12.   (setq strEntityName (car (entsel)))
  13.   (setq listEntityDXF (entget strEntityName))
  14.   (setq strBlockName (cdr (assoc 2 listEntityDXF)))
  15.   (setq listInsertPoint (cdr (assoc 10 listEntityDXF)))
  16.   (InsertBlock strBlockName listInsertPoint 0)
  17. )

点评

我刚测试了,可以插入啊。 提示的块名,是块定义的名字。  详情 回复 发表于 2013-6-5 09:36
对INSERT实体的entmake,还有个方法啊,比命令也快 vla-insertblock 你也不用担心属性什么的问题,建议用这个替代INSERT的entmake  详情 回复 发表于 2013-6-4 17:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-4 17:46:22 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-6-4 17:28
看了半天,还是没有搞明白,你能不能写一个呀?
下面的办法,但属性丢失了

对INSERT实体的entmake,还有个方法啊,比命令也快

vla-insertblock

你也不用担心属性什么的问题,建议用这个替代INSERT的entmake

  1. InsertBlock Method


  2. Inserts a drawing file or a named block that has been defined in the current drawing.

  3. Signature

  4. VBA :RetVal = object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation)

  5. VL : RetVal = (vla-InserBlock object InsertionPoint Name Xscale Yscale ZScale Rotation)

  6. (vla-InsertBlock mspace ip thename xscale yscale zscale rot)

  7. Object : ModelSpace, PaperSpace, Block
  8. The object or objects this method applies to.

  9. InsertionPoint : Variant (three-element array of doubles); input-only
  10. The 3D WCS coordinates specifying the location in the drawing to insert the block.

  11. Name : String; input-only
  12. The name of the AutoCAD drawing file or the name of the block to insert. If it is a file name, include any path information necessary for AutoCAD to find the file and the .dwg extension.

  13. Xscale : Double; input-only; optional
  14. The default equals 1.0. Must be a positive number.

  15. Yscale : Double; input-only; optional
  16. The default equals 1.0. Must be a positive number.

  17. Zscale : Double; input-only; optional
  18. The default equals 1.0. Must be a positive number.

  19. Rotation : Double; input-only; optional
  20. The default equals 0.0 radians.

  21. RetVal : BlockRef object
  22. The placed block as a Block Reference object.

  23. Remarks

  24. Inserting a block into another block will create nested blocks.

  25. Attempting to call the InsertBlock method with an uninitialized Name parameter results in unexpected behavior.
复制代码
  1. ;Example :
  2. (defun c:al-insertblock ()
  3.   (vl-load-com)
  4.   (setq thisdrawing (vla-get-activedocument (vlax-get-acad-object)))
  5.   (setq mspace (vla-get-modelspace thisdrawing))
  6.   (setq util (vla-get-utility thisdrawing))
  7.   (setq ip (vla-GetPoint util nil "\nInsertion Point: "))
  8.   (setq thename (vla-GetString util 1 "\nBlock Name: "))
  9.   (setq xscale (vla-GetReal util "\nX Scale Factor : "))
  10.   (setq yscale (vla-GetReal util "\nY Scale Factor : "))
  11.   (setq zscale (vla-GetReal util "\nZ Scale Factor : "))
  12.   (setq rot (vla-GetReal util "\nRotation Angle : "))
  13.   (setq theblock (vla-InsertBlock mspace ip thename xscale yscale zscale rot))
  14.   (princ)
  15. )


点评

运行错误了!!  发表于 2013-6-4 17:51

评分

参与人数 1D豆 +3 收起 理由
/db_自贡黄明儒_ + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-5 09:36:01 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-6-4 17:28
看了半天,还是没有搞明白,你能不能写一个呀?
下面的办法,但属性丢失了

我刚测试了,可以插入啊。 提示的块名,是块定义的名字。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 12:23 , Processed in 0.358070 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表