找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 576|回复: 1

[转贴]:Automating Bubble Blocks Using ActiveX

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-8-13 13:27:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
http://www.digitalcad.com/articles/viewarticle.jsp?id=11290

  1. (defun c:db (/ bk attr fa sa p2 p3 ad)
  2.   (setq        *old-error* *error*
  3.         *error*            *db-error*
  4.   )
  5.   (if (not (tblsearch "block" "db"))
  6.     (create-detail-bubble)
  7.   )
  8.   (while (setq p1 (getpoint " Pick Insertion: "))
  9.     (if        p1
  10.       (progn
  11.         (setq ad (vla-get-modelspace
  12.                    (vla-get-ActiveDocument
  13.                      (vlax-get-Acad-Object)
  14.                    )
  15.                  )
  16.         )
  17.         (vla-insertblock
  18.           ad
  19.           p1
  20.           "db"
  21.           (getvar "dimscale")
  22.           (getvar "dimscale")
  23.           "0"
  24.         )
  25.         (setq bk   (vlax-ename->vla-object (entlast))
  26.               attr (vla-getattributes bk)
  27.               fa   (car attr)
  28.               sa   (car (reverse attr))
  29.               p2   (polar p1 (dtr 90.00) (* 0.120 (GETVAR "DIMSCALE")))
  30.               p3   (polar p1 (dtr -90.00) (* 0.120 (GETVAR "DIMSCALE")))
  31.         )
  32.         (vla-put-insertionPoint fa p2)
  33.         (vla-put-insertionPoint sa p3)

  34.         (vla-put-horizontalalignment fa 1)
  35.         (vla-put-horizontalalignment sa 1)
  36.         (vla-put-verticalalignment fa 2)
  37.         (vla-put-verticalalignment sa 2)
  38.         (vla-put-layer fa "0")
  39.         (vla-put-layer sa "0")
  40.         (vla-put-color fa acByLayer)
  41.         (vla-put-color sa acByLayer)
  42.         (vla-put-height fa (* 0.1042 (GETVAR "DIMSCALE")))
  43.         (vla-put-height sa (* 0.1042 (GETVAR "DIMSCALE")))
  44.         (vla-put-stylename fa "ROMANS")
  45.         (vla-put-stylename sa "ROMANS")
  46.         (vla-put-textalignmentpoint fa p2)
  47.         (vla-put-textalignmentpoint sa p3)
  48.         (db-create-flag)
  49.       )
  50.     )
  51.   )
  52.   (setq        *error*        *old-error*
  53.         p1        nil
  54.   )
  55.   (princ)
  56. )
  57. (defun db-create-flag (/ p2 p3 di an f1 f2 f3 f4)
  58.   (while
  59.     (setq p2 (getpoint p1 " Pick Point: "))
  60.      (progn
  61.        (if
  62.          (not ss)
  63.           (setq
  64.             p1 (polar p1 (angle p1 p2) (* (getvar "dimscale") 0.2188))
  65.           )
  66.        )
  67.        (entmake        (list (cons 0 "LINE")
  68.                       (cons 10 p1)
  69.                       (cons 11 p2)
  70.                       (cons 8
  71.                             (getvar "clayer")
  72.                       )
  73.                       (cons 62 256)
  74.                 )
  75.        )
  76.        (if (not ss)
  77.          (setq ss (ssadd))
  78.        )
  79.        (setq ss (ssadd (entlast) ss))
  80.        (setq b1        p1
  81.              p1        p2
  82.        )
  83.      )
  84.   )
  85.   (if ss
  86.     (progn
  87.       (setq p2 (getpoint p1 " Place Flag: "))
  88.       (if p2
  89.         (progn
  90.           (setq        di (distance p1 p2)
  91.                 an (angle b1 p1)
  92.                 f2 (polar p1 an di)
  93.                 f1 (polar p1 (+ an (dtr 90.00)) 0.75)
  94.                 f2 (polar f2 (+ an (dtr 90.00)) 0.75)
  95.                 f3 (polar f2 (+ an (dtr -90.00)) 1.5)
  96.                 f4 (polar f1 (+ an (dtr -90.00)) 1.5)
  97.           )
  98.           (entmake (list (cons 0 "LINE")
  99.                          (cons 10 f1)
  100.                          (cons 11 f2)
  101.                          (cons 8
  102.                                (getvar "clayer")
  103.                          )
  104.                          (cons 62 256)
  105.                    )
  106.           )
  107.           (entmake (list (cons 0 "LINE")
  108.                          (cons 10 f3)
  109.                          (cons 11 f4)
  110.                          (cons 8
  111.                                (getvar "clayer")
  112.                          )
  113.                          (cons 62 256)
  114.                    )
  115.           )
  116.           (entmake (list (cons 0 "LINE")
  117.                          (cons 10 f1)
  118.                          (cons 11 f4)
  119.                          (cons 8
  120.                                (getvar "clayer")
  121.                          )
  122.                          (cons 62 256)
  123.                    )
  124.           )
  125.         )
  126.       )
  127.     )
  128.   )
  129.   (setq ss nil)
  130.   (princ)
  131. )
  132. (defun *db-error* (msg)
  133.   (command "erase" ss "")
  134.   (setq        *error*        *old-error*
  135.         ss        nil
  136.   )
  137.   (princ)
  138. )
  139. (defun create-detail-bubble (/)
  140.   (if (= (tblsearch "style" "romans") nil)
  141.     (command "style" "romans" "romans.shx" "" ".85" "" "" "" "")
  142.   )
  143.   (entmake '((0 . "block")
  144.              (2 . "db")
  145.              (70 . 2)
  146.              (10 0.0 0.0 0.0)
  147.              (8 . "0")
  148.             )
  149.   )
  150.   (entmake '((0 . "ATTDEF")
  151.              (10 -0.21503 0.0563637 0.0)
  152.              (40 . 0.104167)
  153.              (1 . "-")
  154.              (50 . 0.0)
  155.              (41 . 0.85)
  156.              (51 . 0.0)
  157.              (7 . "ROMANS")
  158.              (71 . 0)
  159.              (72 . 1)
  160.              (11 0.0 0.108447 0.0)
  161.              (210 0.0 0.0 1.0)
  162.              (3 . "DETAIL NUMBER")
  163.              (2 . "DETAIL")
  164.              (73 . 0)
  165.              (74 . 2)
  166.              (70 . 0)
  167.              (8 . "0")
  168.             )
  169.   )
  170.   (entmake '((0 . "ATTDEF")
  171.              (10 -0.206597 -0.162386 0.0)
  172.              (40 . 0.104167)
  173.              (1 . "-")
  174.              (50 . 0.0)
  175.              (41 . 0.85)
  176.              (51 . 0.0)
  177.              (7 . "ROMANS")
  178.              (71 . 0)
  179.              (72 . 4)
  180.              (11 0.0 -0.110303 0.0)
  181.              (210 0.0 0.0 1.0)
  182.              (3 . "SHEET NUMBER")
  183.              (2 . "SHEET")
  184.              (73 . 0)
  185.              (74 . 0)
  186.              (70 . 0)
  187.              (8 . "0")
  188.             )
  189.   )
  190.   (entmake '((0 . "LINE")
  191.              (10 0.21875 0.0 0.0)
  192.              (11 -0.21875 0.0 0.0)
  193.              (8
  194.               .
  195.               "0"
  196.              )
  197.             )
  198.   )
  199.   (entmake
  200.     '((0 . "CIRCLE") (10 0.0 0.0 0.0) (40 . 0.21875) (8 . "0"))
  201.   )
  202.   (entmake '((0 . "ENDBLK")))
  203.   (princ)
  204. )
  205. (defun dtr (a)
  206.   (* pi (/ a 180.0))
  207. )
  208. (defun rtd (a)
  209.   (/ (* a 180.0) pi)
  210. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-18 15:24:00 | 显示全部楼层
请问怎么用呀?输入命令后提示:
Pick Insertion: 未知命令“db”。按 F1 查看帮助。
命令:  db  Pick Insertion: 未知命令“db”。按 F1 查看帮助。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-18 23:18 , Processed in 0.384770 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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