找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1202|回复: 2

[已解决] 在CAD中直接插入指定块命令咨询

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2016-9-9 11:21:14 | 显示全部楼层 |阅读模式
悬赏20D豆未解决
本帖最后由 newer 于 2021-2-4 05:03 编辑

平时画图经常使用几类块,使用块插入insert命令会弹出交互式窗口,使用CTRL+C/V觉得也不方便。
想编程做个简化LSP程序,比如CRXG.lsp(插入巡更点图块的快捷命令),输入命令再选择某点,可直接插入指定图块。
程序是参考以前论坛坛主编写代码中的InsertBlock ( strBlockName listInsertPoint floatRotateAngle )函数。
目前使用中出现问题,提示错误,代码如下。请高手帮忙指导点拨。谢谢!
;;==============================crxg 插入巡更点图块(打开的dwg文件上已有 巡更点 块了)
(defun c:crxg()
  (setq strBlockName "巡更点")
  (setq pt (getpoint "\n请选择要插入新块的位置:"))
  (setq floatBlockBoundingBoxTargetMinPointX (car pt)
        floatBlockBoundingBoxTargetMinPointY (cadr pt)
  (setq listInsertPoint (list floatBlockBoundingBoxTargetMinPointX  floatBlockBoundingBoxTargetMinPointY  ) )
  (InsertBlock strBlockName listInsertPoint 0)
  ;;以块缩略图允许放置范围的左下角点为块缩略图的基点插入图块
)
;;;------------------------------------------------------------------------
;;;在当前图层、当前空间插入块
;;;调用形式 ( InsertBlock  显示  插入点  旋转角度 )
;;;成功时,返回dxf组码,否则返回nil
(defun InsertBlock ( strBlockName listInsertPoint floatRotateAngle )
(entmake (list '(0 . "INSERT")
'(100 . "AcDbEntity")
'(100 . "AcDbBlockReference")
(cons 2 strBlockName)
(cons 10 listInsertPoint)
(cons 50 floatRotateAngle)))
)

crxg.lsp

919 Bytes, 下载次数: 10, 下载积分: D豆 -1 , 活跃度 1

LSP文件

CRXG.rar

13.65 KB, 下载次数: 10, 下载积分: D豆 -1 , 活跃度 1

dwg文件

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-9-9 12:14:06 | 显示全部楼层
提示你什么错误?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2016-9-9 13:58:25 | 显示全部楼层
问题解决了!搜了其它方法.
;;==============================crxgd 插入巡更点图块
(defun c:crxgd()
       (EntmakeInsertB "巡更点" (getpoint))

)

;;181.3 [功能] 插入块(entmake法 属性或者非属性块)
;;(EntmakeInsertB "ccd1" (getpoint))
;;(EntmakeInsertB "TYBTL" (getpoint))
(defun EntmakeInsertB (name pt / E EN P10 STR)
   (defun MKATTRIB (pt str H)
     (entmake (list
                '(0 . "ATTRIB")
                '(100 . "AcDbEntity")
                '(100 . "AcDbText")
                (cons 10 pt)
                (cons 40 H)
                (cons 1 str)
                '(100 . "AcDbAttribute")
                (cons 2 str)
                '(70 . 0)
              )
     )   
   )  
   (setq e (TBLOBJNAME "Block" name))
   (setq pt (trans pt 1 0))
   (cond        ((equal (assoc 70 (entget e)) '(70 . 0))
          (entmake (list '(0 . "INSERT") (cons 2 name) (cons 10 pt)))
         )
         (T
          (entmake (list '(0 . "INSERT") '(66 . 1) (cons 2 name) (cons 10 pt)))
          (while        (setq e (entnext e))
            (setq en (entget e))
            (cond ((equal (assoc 0 en) '(0 . "ATTDEF"))                  
                   (setq p10 (mapcar '+ pt (cdr (assoc 10 en))))
                   (setq str (cdr (assoc 1 en)))                  
                   (MKATTRIB p10 str (cdr (assoc 40 en)))
                  )
            )
          )
          (entmake '((0 . "SEQEND")))
         )
   )
   (entlast)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 23:26 , Processed in 0.387727 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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