乐筑天下

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

更新定义及其所有块引用?- 别再问我这个了!!!!

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2020-12-31 15:13:15 | 显示全部楼层 |阅读模式
也许我正在变老(那一定是这样),或者我只是太愚蠢了,不知道发生了什么。
每次我想插入一个块时,我都会对一个愚蠢的弹出窗口感到恼火。“[块]已经定义。图形中已存在 432 个块参照。更新定义及其所有块引用?
嗯..不,我不想被提示432次了!
专家是无济于
事 BlockRedefineMode 是无济于事
的,到底是怎么回事?
每次我输入块名称时,它总是希望引用该文件并从图形文件插入,而不是从图形中已有的块定义插入。
有人请帮帮我..我在这里失去了理智!

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

72

主题

738

帖子

75

银币

中流砥柱

Rank: 25

铜币
957
发表于 2020-12-31 17:40:43 | 显示全部楼层
您是否正在尝试重新定义和更新插入?
当您从 DWG 文件将块插入 DWG 时,是否会发生这种情况?
如果答案是肯定的,那么我建议您从文件夹中收集所有dwg,您可以在其中收集所有块以进行重新定义并创建将执行INSERT命令的脚本,并始终将问题“是/否”作为“是”回答...
如果您已经有了定义,并且只是从DWG插入它们,那么我也不知道发生了什么 - 应该没有任何问题......
一些链接...
https://www.cadtutor.net/forum/topic/71630-redefine-every-single-blocks-contained-in-a-drawing-from-block-library-folder-path/
看看李麦克先生的回答...
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2020-12-31 18:18:39 | 显示全部楼层
块已经在绘图中...
我大部分时间都是键盘突击队,但我使用插入对话框...
我只是键入I[ENTER]
GUI弹出
我在名称组合中键入名称并按[ENTER]
NO!!!我不想得到通知!!停止它!!
我已经在这幅图中插入了432次这个块放弃了!如果我在过去的432次中没有说是,为什么我会在433次中说是?!
我不知道...当我能够在我的Win 10 x64 PC上使用CAD时,它并没有这样做...在欧特克拒绝允许我在那台PC上使用我完全合法的许可证之前...所以我被降级为在我的旧Win 7 x64 PC上使用它,因为显然他们希望我购买订阅而不是永久许可证。
唉,我讨厌这家公司
抱歉咆哮!我一整天都在画这些画,它让我筋疲力尽!
回复

使用道具 举报

19

主题

99

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2020-12-31 18:39:13 | 显示全部楼层
我在AutoCAD克隆方面取得了相当大的成功。但是要习惯它们需要一些工作。比方说,你必须喜欢修补它们。它们有自己独特的挫败感。
我非常讨厌AutoCAD的新“插入”界面。我也避免了旧的。当我记住块的名称时,我总是使用“插入”命令。对于频繁插入的块,我会制作一个基本的LISP。或者被迫使用AutoCAD LT时的宏。通过配置一个非常光滑的功能区面板设置,我能够从AutoCAD LT中获得令人惊讶的快速性能。
试一下“插入”命令,看看它是否仍然提示您。
回复

使用道具 举报

72

主题

738

帖子

75

银币

中流砥柱

Rank: 25

铜币
957
发表于 2021-1-1 03:02:02 | 显示全部楼层
Keith,试试这个lisp...我知道,对话框提供了块的预览,但没有显示属性,但它使用(vla-sendCommand)最终插入您选择的块...是我那个mod。Lee先生的BlockPreview DCL示例,但我用得很好...我认为它可能对您有帮助...
问候,M. R.
  1. (defun c:binsert ( / *error* LM:BlockPreview RefGeom LM:Entity->PointList trp mxm mxv _blockpreview _ins dcl def des lst tmp bln )
  2.     (vl-load-com)
  3.     (defun *error* ( msg )
  4.         (if (
  5.             (unload_dialog dcl)
  6.         )
  7.         (if (= 'file (type des))
  8.             (close des)
  9.         )
  10.         (if (and tmp (findfile tmp))
  11.             (vl-file-delete tmp)
  12.         )
  13.         (if (and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
  14.             (princ (strcat "\nError: " msg))
  15.         )
  16.         (princ)
  17.     )
  18.     (defun-q LM:BlockPreview ( key block margin / _getcolour _getvectors _unique bn cache dy ec el en mi mx pl r1 r2 sc vc vl xt yt )
  19.         (setq cache '( ))
  20.         (defun _getcolour ( l / c )
  21.             (cond
  22.                 (   (= 0 (setq c (cdr (assoc 62 l))))
  23.                     7
  24.                 )
  25.                 (   (or (null c) (= 256 c))
  26.                     (abs (cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 l))))))
  27.                 )
  28.                 (   c   )
  29.             )
  30.         )
  31.         (defun _getvectors ( bn / ec el en pl rg vl )
  32.             (if (setq en (tblobjname "BLOCK" bn))
  33.                 (while (setq en (entnext en))
  34.                     (setq el (entget en))
  35.                     (cond
  36.                         (   (= 1 (cdr (assoc 60 el))))
  37.                         (   (= "INSERT" (cdr (assoc 0 el)))
  38.                             (setq rg (RefGeom en))
  39.                             (setq vl
  40.                                 (append vl
  41.                                     (mapcar
  42.                                         (function
  43.                                             (lambda ( x )
  44.                                                 (append
  45.                                                     (mapcar '+ (mxv (car rg) (list (car   x) (cadr   x) 0.0)) '(0 0) (cadr rg))
  46.                                                     (mapcar '+ (mxv (car rg) (list (caddr x) (cadddr x) 0.0)) '(0 0) (cadr rg))
  47.                                                     (cddddr x)
  48.                                                 )
  49.                                             )
  50.                                         )
  51.                                         (_getvectors (cdr (assoc 2 el)))
  52.                                     )
  53.                                 )
  54.                             )
  55.                         )
  56.                         (   (setq pl (LM:Entity->PointList en))
  57.                             (if (or (= "POINT" (cdr (assoc 0 el))) (vlax-curve-isclosed en))
  58.                                 (setq pl (cons (last pl) pl))
  59.                             )
  60.                             (setq ec (_getcolour el))
  61.                             (setq vl
  62.                                 (append vl
  63.                                     (mapcar
  64.                                         (function
  65.                                             (lambda ( a b )
  66.                                                 (list (car a) (cadr a) (car b) (cadr b) ec)
  67.                                             )
  68.                                         )
  69.                                         pl (cdr pl)
  70.                                     )
  71.                                 )
  72.                             )
  73.                         )
  74.                     )
  75.                 )
  76.             )
  77.             vl
  78.         )
  79.         (defun _unique ( l / a r )
  80.             (while (setq a (car l))
  81.                 (setq r (cons a r)
  82.                       l (vl-remove-if (function (lambda ( b ) (equal a b))) (cdr l))
  83.                 )
  84.             )
  85.             (reverse r)
  86.         )
  87.         (cond
  88.             (   (or (
  89.                     (
  90.                     (
  91.                 )
  92.                 nil
  93.             )
  94.             (   (setq vl (assoc (strcase block) cache))
  95.                 (foreach x (cdr vl) (apply 'vector_image x))
  96.                 t
  97.             )            
  98.             (   (setq vl (_getvectors block))
  99.                 (setq mi (apply 'mapcar (cons 'min vl))
  100.                       mx (apply 'mapcar (cons 'max vl))
  101.                       mi (list (min (car mi) (caddr mi)) (min (cadr mi) (cadddr mi)))
  102.                       mx (list (max (car mx) (caddr mx)) (max (cadr mx) (cadddr mx)))
  103.                       r1 (/ (- (car  mx) (car  mi)) (- xt (* 2 margin)))
  104.                       r2 (/ (- (cadr mx) (cadr mi)) (- yt (* 2 margin)))
  105.                 )
  106.                 (cond
  107.                     (   (and (equal r1 r2 1e-8) (equal r1 0.0 1e-8))
  108.                         (setq sc 1.0
  109.                               vc (mapcar '- mi (list (/ xt 2.0) (/ yt 2.0)))
  110.                         )
  111.                     )
  112.                     (   (equal r1 r2 1e-8)
  113.                         (setq sc r1
  114.                               vc (mapcar '(lambda ( x ) (- x (* sc margin))) mi)
  115.                         )
  116.                     )
  117.                     (   (
  118.                         (setq sc r2)
  119.                         (setq vc
  120.                             (list
  121.                                 (- (car  mi) (/ (- (* sc xt) (- (car mx) (car mi))) 2.0))
  122.                                 (- (cadr mi) (* sc margin))
  123.                             )
  124.                         )
  125.                     )
  126.                     (   t
  127.                         (setq sc r1)
  128.                         (setq vc
  129.                             (list
  130.                                 (- (car  mi) (* sc margin))
  131.                                 (- (cadr mi) (/ (- (* sc yt) (- (cadr mx) (cadr mi))) 2.0))
  132.                             )
  133.                         )
  134.                     )
  135.                 )
  136.                 (setq vc (append vc vc))
  137.                 (   (setq LM:BlockPreview
  138.                         (vl-list* '( key block margin )
  139.                              (list 'setq 'cache
  140.                                  (list 'quote
  141.                                      (cons
  142.                                          (cons (strcase block)
  143.                                              (_unique
  144.                                                  (mapcar
  145.                                                      (function
  146.                                                          (lambda ( a / x )
  147.                                                              (setq x (mapcar '(lambda ( a b ) (fix (/ (- a b) sc))) a vc))
  148.                                                              (list
  149.                                                                  (car x)
  150.                                                                  (- yt (cadr x))
  151.                                                                  (caddr x)
  152.                                                                  (- yt (cadddr x))
  153.                                                                  (last a)
  154.                                                              )
  155.                                                          )
  156.                                                      )
  157.                                                      vl
  158.                                                  )
  159.                                              )
  160.                                          )
  161.                                          cache
  162.                                      )
  163.                                  )
  164.                              )
  165.                              (cddr LM:BlockPreview)
  166.                         )
  167.                     )
  168.                     key block margin
  169.                 )
  170.             )
  171.         )
  172.     )
  173.     (defun RefGeom ( ename / elst ang norm mat )
  174.         (setq elst (entget ename)
  175.               ang  (cdr (assoc 50 elst))
  176.               norm (cdr (assoc 210 elst))
  177.         )
  178.         (list
  179.             (setq mat
  180.                 (mxm
  181.                     (mapcar '(lambda ( v ) (trans v 0 norm t))
  182.                        '(
  183.                             (1.0 0.0 0.0)
  184.                             (0.0 1.0 0.0)
  185.                             (0.0 0.0 1.0)
  186.                         )
  187.                     )
  188.                     (mxm
  189.                         (list
  190.                             (list (cos ang) (- (sin ang)) 0.0)
  191.                             (list (sin ang) (cos ang)     0.0)
  192.                            '(0.0 0.0 1.0)
  193.                         )
  194.                         (list
  195.                             (list (cdr (assoc 41 elst)) 0.0 0.0)
  196.                             (list 0.0 (cdr (assoc 42 elst)) 0.0)
  197.                             (list 0.0 0.0 (cdr (assoc 43 elst)))
  198.                         )
  199.                     )
  200.                 )
  201.             )
  202.             (mapcar '- (trans (cdr (assoc 10 elst)) norm 0)
  203.                 (mxv mat (cdr (assoc 10 (tblsearch "BLOCK" (cdr (assoc 2 elst))))))
  204.             )
  205.         )
  206.     )
  207.     (defun LM:Entity->PointList ( ent / der di1 di2 di3 elst fun inc lst par rad )
  208.         (setq elst (entget ent))
  209.         (cond
  210.             (   (eq "POINT" (cdr (assoc 0 elst)))
  211.                 (list (cdr (assoc 10 elst)))
  212.             )
  213.             (   (eq "LINE" (cdr (assoc 0 elst)))
  214.                 (list (cdr (assoc 10 elst)) (cdr (assoc 11 elst)))
  215.             )
  216.             (   (member (cdr (assoc 0 elst)) '("CIRCLE" "ARC"))
  217.                 (setq di1 0.0
  218.                       di2 (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent))
  219.                       inc (/ di2 (1+ (fix (* 35.0 (/ di2 (cdr (assoc 40 elst)) (+ pi pi))))))
  220.                       fun (if (vlax-curve-isclosed ent)
  221.                 )
  222.                 (while (fun di1 di2)
  223.                     (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  224.                           di1 (+ di1 inc)
  225.                     )
  226.                 )
  227.                 lst
  228.             )
  229.             (   (or (eq (cdr (assoc 0 elst)) "LWPOLYLINE")
  230.                     (and (eq (cdr (assoc 0 elst)) "POLYLINE") (zerop (logand (cdr (assoc 70 elst)) 80)))
  231.                 )
  232.                 (setq par 0)
  233.                 (repeat (fix (1+ (vlax-curve-getendparam ent)))
  234.                     (if (setq der (vlax-curve-getsecondderiv ent par))
  235.                         (if (equal der '(0.0 0.0 0.0) 1e-8)
  236.                             (setq lst (cons (vlax-curve-getpointatparam ent par) lst))
  237.                             (if (setq rad (distance '(0.0 0.0) (vlax-curve-getfirstderiv ent par))
  238.                                       di1 (vlax-curve-getdistatparam ent par)
  239.                                       di2 (vlax-curve-getdistatparam ent (1+ par))
  240.                                 )
  241.                                 (progn
  242.                                     (setq inc (/ (- di2 di1) (1+ (fix (* 35.0 (/ (- di2 di1) rad (+ pi pi)))))))
  243.                                     (while (
  244.                                         (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  245.                                               di1 (+ di1 inc)
  246.                                         )
  247.                                     )
  248.                                 )
  249.                             )
  250.                         )
  251.                     )
  252.                     (setq par (1+ par))
  253.                 )
  254.                 (if (or (vlax-curve-isclosed ent) (equal '(0.0 0.0 0.0) der 1e-8))
  255.                     lst
  256.                     (cons (vlax-curve-getendpoint ent) lst)
  257.                 )
  258.             )
  259.             (   (eq (cdr (assoc 0 elst)) "ELLIPSE")
  260.                 (setq di1 (vlax-curve-getdistatparam ent (vlax-curve-getstartparam ent))
  261.                       di2 (vlax-curve-getdistatparam ent (vlax-curve-getendparam   ent))
  262.                       di3 (* di2 (/ (+ pi pi) (abs (- (vlax-curve-getendparam ent) (vlax-curve-getstartparam ent)))))
  263.                 )
  264.                 (while (
  265.                     (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  266.                           der (distance '(0.0 0.0) (vlax-curve-getsecondderiv ent (vlax-curve-getparamatdist ent di1)))
  267.                           di1 (+ di1 (/ di3 (1+ (fix (/ 35.0 (/ di3 der (+ pi pi)))))))
  268.                     )
  269.                 )
  270.                 (if (vlax-curve-isclosed ent)
  271.                     lst
  272.                     (cons (vlax-curve-getendpoint ent) lst)
  273.                 )
  274.             )
  275.             (   (eq (cdr (assoc 0 elst)) "SPLINE")
  276.                 (setq di1 (vlax-curve-getdistatparam ent (vlax-curve-getstartparam ent))
  277.                       di2 (vlax-curve-getdistatparam ent (vlax-curve-getendparam   ent))
  278.                       inc (/ di2 25.0)
  279.                 )
  280.                 (while (
  281.                     (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  282.                           di1 (+ di1 inc)
  283.                     )
  284.                 )
  285.                 (if (vlax-curve-isclosed ent)
  286.                     lst
  287.                     (cons (vlax-curve-getendpoint ent) lst)
  288.                 )
  289.             )
  290.         )
  291.     )
  292.     (defun trp ( m )
  293.         (apply 'mapcar (cons 'list m))
  294.     )
  295.     (defun mxm ( m n )
  296.         ((lambda ( a ) (mapcar '(lambda ( r ) (mxv a r)) m)) (trp n))
  297.     )
  298.     (defun mxv ( m v )
  299.         (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
  300.     )
  301.     (defun _blockpreview ( blk )
  302.         (start_image "img")
  303.         (fill_image 0 0 (dimx_tile "img") (dimy_tile "img") 0)
  304.         (LM:BlockPreview "img" blk 5)
  305.         (end_image)
  306.     )
  307.     (defun _ins ( bln )
  308.         (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "_.-INSERT\n" bln "\n"))
  309.     )
  310.     (while (setq def (tblnext "BLOCK" (null def)))
  311.         (if
  312.             (and
  313.                 (= 0 (logand 125 (cdr (assoc 70 def))))
  314.                 (not (wcmatch (cdr (assoc 2 def)) "`_*,`**,*|*"))
  315.             )
  316.             (setq lst (cons (cdr (assoc 2 def)) lst))
  317.         )
  318.     )
  319.     (cond
  320.         (   (null (setq lst (vl-sort lst '
  321.             (princ "\nNo blocks found in drawing.")
  322.         )
  323.         (   (null
  324.                 (and
  325.                     (setq tmp (vl-filename-mktemp nil nil ".dcl"))
  326.                     (setq des (open tmp "w"))
  327.                     (foreach line
  328.                        '(
  329.                             "blockpreview : dialog"
  330.                             "{"
  331.                             "    label = "Block Preview";"
  332.                             "    initial_focus = "lst";"
  333.                             "    spacer;"
  334.                             "    : row"
  335.                             "    {"
  336.                             "        : list_box { key = "lst"; width = 30.0; fixed_width = true; }"
  337.                             "        spacer;"
  338.                             "        : image"
  339.                             "        {"
  340.                             "            key = "img";"
  341.                             "            width = 33.5;"
  342.                             "            aspect_ratio = 1.0;"
  343.                             "            fixed_width = true;"
  344.                             "            fixed_height = true;"
  345.                             "        }"
  346.                             "    }"
  347.                             "    spacer;"
  348.                             "    ok_cancel;"
  349.                             "}"
  350.                         )
  351.                         (write-line line des)
  352.                     )
  353.                     (not (setq des (close des)))
  354.                     (
  355.                     (new_dialog "blockpreview" dcl)
  356.                 )
  357.             )
  358.             (princ "\nUnable to load dialog.")
  359.         )
  360.         (   t
  361.             (start_list "lst")
  362.             (foreach x lst (add_list x))
  363.             (end_list)
  364.             (set_tile "lst" "0")
  365.             (setq bln (nth 0 lst))
  366.             (_blockpreview (car lst))
  367.             (action_tile "lst" "(_blockpreview (setq bln (nth (atoi $value) lst)))")
  368.             (action_tile "accept" "(progn(_ins bln)(done_dialog 1))")
  369.             (action_tile "cancel" "(done_dialog 0)")
  370.             (start_dialog)
  371.         )
  372.     )
  373.     (*error* nil)
  374. )
回复

使用道具 举报

72

主题

738

帖子

75

银币

中流砥柱

Rank: 25

铜币
957
发表于 2021-1-1 03:25:32 | 显示全部楼层
  1. (defun c:binsert-tiles ( / *error* LM:BlockPreview RefGeom LM:Entity->PointList trp mxm mxv _blockpreview _blockpreview-highlight _ins dcl def des lst tmp k q bln )
  2.   (vl-load-com)
  3.   (defun *error* ( msg )
  4.     (if (
  5.       (unload_dialog dcl)
  6.     )
  7.     (if (= 'file (type des))
  8.       (close des)
  9.     )
  10.     (if (and tmp (findfile tmp))
  11.       (vl-file-delete tmp)
  12.     )
  13.     (if (and msg (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")))
  14.       (princ (strcat "\nError: " msg))
  15.     )
  16.     (princ)
  17.   )
  18.   (defun-q LM:BlockPreview ( key block margin / _getcolour _getvectors _unique bn cache dy ec el en mi mx pl r1 r2 sc vc vl xt yt )
  19.     (setq cache '( ))
  20.     (defun _getcolour ( l / c )
  21.       (cond
  22.         ( (= 0 (setq c (cdr (assoc 62 l))))
  23.           7
  24.         )
  25.         ( (or (null c) (= 256 c))
  26.           (abs (cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 l))))))
  27.         )
  28.         ( c )
  29.       )
  30.     )
  31.     (defun _getvectors ( bn / ec el en pl rg vl )
  32.       (if (setq en (tblobjname "BLOCK" bn))
  33.         (while (setq en (entnext en))
  34.           (setq el (entget en))
  35.           (cond
  36.             ( (= 1 (cdr (assoc 60 el))))
  37.             ( (= "INSERT" (cdr (assoc 0 el)))
  38.               (setq rg (RefGeom en))
  39.               (setq vl
  40.                 (append vl
  41.                   (mapcar
  42.                     (function
  43.                       (lambda ( x )
  44.                         (append
  45.                           (mapcar '+ (mxv (car rg) (list (car   x) (cadr   x) 0.0)) '(0 0) (cadr rg))
  46.                           (mapcar '+ (mxv (car rg) (list (caddr x) (cadddr x) 0.0)) '(0 0) (cadr rg))
  47.                           (cddddr x)
  48.                         )
  49.                       )
  50.                     )
  51.                     (_getvectors (cdr (assoc 2 el)))
  52.                   )
  53.                 )
  54.               )
  55.             )
  56.             ( (setq pl (LM:Entity->PointList en))
  57.               (if (or (= "POINT" (cdr (assoc 0 el))) (vlax-curve-isclosed en))
  58.                 (setq pl (cons (last pl) pl))
  59.               )
  60.               (setq ec (_getcolour el))
  61.               (setq vl
  62.                 (append vl
  63.                   (mapcar
  64.                     (function
  65.                       (lambda ( a b )
  66.                         (list (car a) (cadr a) (car b) (cadr b) ec)
  67.                       )
  68.                     )
  69.                     pl (cdr pl)
  70.                   )
  71.                 )
  72.               )
  73.             )
  74.           )
  75.         )
  76.       )
  77.       vl
  78.     )
  79.     (defun _unique ( l / a r )
  80.       (while (setq a (car l))
  81.         (setq r (cons a r)
  82.               l (vl-remove-if (function (lambda ( b ) (equal a b))) (cdr l))
  83.         )
  84.       )
  85.       (reverse r)
  86.     )
  87.     (cond
  88.       ( (or (
  89.           (
  90.           (
  91.         )
  92.         nil
  93.       )
  94.       ( (setq vl (assoc (strcase block) cache))
  95.         (foreach x (cdr vl) (apply 'vector_image x))
  96.         t
  97.       )            
  98.       ( (setq vl (_getvectors block))
  99.         (setq mi (apply 'mapcar (cons 'min vl))
  100.               mx (apply 'mapcar (cons 'max vl))
  101.               mi (list (min (car mi) (caddr mi)) (min (cadr mi) (cadddr mi)))
  102.               mx (list (max (car mx) (caddr mx)) (max (cadr mx) (cadddr mx)))
  103.               r1 (/ (- (car  mx) (car  mi)) (- xt (* 2 margin)))
  104.               r2 (/ (- (cadr mx) (cadr mi)) (- yt (* 2 margin)))
  105.         )
  106.         (cond
  107.           ( (and (equal r1 r2 1e-8) (equal r1 0.0 1e-8))
  108.             (setq sc 1.0
  109.                   vc (mapcar '- mi (list (/ xt 2.0) (/ yt 2.0)))
  110.             )
  111.           )
  112.           ( (equal r1 r2 1e-8)
  113.             (setq sc r1
  114.                   vc (mapcar '(lambda ( x ) (- x (* sc margin))) mi)
  115.             )
  116.           )
  117.           ( (
  118.             (setq sc r2)
  119.             (setq vc
  120.               (list
  121.                 (- (car  mi) (/ (- (* sc xt) (- (car mx) (car mi))) 2.0))
  122.                 (- (cadr mi) (* sc margin))
  123.               )
  124.             )
  125.           )
  126.           ( t
  127.             (setq sc r1)
  128.             (setq vc
  129.               (list
  130.                 (- (car  mi) (* sc margin))
  131.                 (- (cadr mi) (/ (- (* sc yt) (- (cadr mx) (cadr mi))) 2.0))
  132.               )
  133.             )
  134.           )
  135.         )
  136.         (setq vc (append vc vc))
  137.         ( (setq LM:BlockPreview
  138.             (vl-list* '( key block margin )
  139.               (list 'setq 'cache
  140.                 (list 'quote
  141.                   (cons
  142.                     (cons (strcase block)
  143.                       (_unique
  144.                         (mapcar
  145.                           (function
  146.                             (lambda ( a / x )
  147.                               (setq x (mapcar '(lambda ( a b ) (fix (/ (- a b) sc))) a vc))
  148.                               (list
  149.                                 (car x)
  150.                                 (- yt (cadr x))
  151.                                 (caddr x)
  152.                                 (- yt (cadddr x))
  153.                                 (last a)
  154.                               )
  155.                             )
  156.                           )
  157.                           vl
  158.                         )
  159.                       )
  160.                     )
  161.                     cache
  162.                   )
  163.                 )
  164.               )
  165.               (cddr LM:BlockPreview)
  166.             )
  167.           )
  168.           key block margin
  169.         )
  170.       )
  171.     )
  172.   )
  173.   (defun RefGeom ( ename / elst ang norm mat )
  174.     (setq elst (entget ename)
  175.           ang  (cdr (assoc 50 elst))
  176.           norm (cdr (assoc 210 elst))
  177.     )
  178.     (list
  179.       (setq mat
  180.         (mxm
  181.           (mapcar '(lambda ( v ) (trans v 0 norm t))
  182.             '(
  183.                (1.0 0.0 0.0)
  184.                (0.0 1.0 0.0)
  185.                (0.0 0.0 1.0)
  186.              )
  187.            )
  188.            (mxm
  189.              (list
  190.                (list (cos ang) (- (sin ang)) 0.0)
  191.                (list (sin ang) (cos ang)     0.0)
  192.               '(0.0 0.0 1.0)
  193.              )
  194.              (list
  195.                (list (cdr (assoc 41 elst)) 0.0 0.0)
  196.                (list 0.0 (cdr (assoc 42 elst)) 0.0)
  197.                (list 0.0 0.0 (cdr (assoc 43 elst)))
  198.              )
  199.            )
  200.         )
  201.       )
  202.       (mapcar '- (trans (cdr (assoc 10 elst)) norm 0)
  203.           (mxv mat (cdr (assoc 10 (tblsearch "BLOCK" (cdr (assoc 2 elst))))))
  204.       )
  205.     )
  206.   )
  207.   (defun LM:Entity->PointList ( ent / der di1 di2 di3 elst fun inc lst par rad )
  208.     (setq elst (entget ent))
  209.     (cond
  210.       ( (eq "POINT" (cdr (assoc 0 elst)))
  211.         (list (cdr (assoc 10 elst)))
  212.       )
  213.       ( (eq "LINE" (cdr (assoc 0 elst)))
  214.         (list (cdr (assoc 10 elst)) (cdr (assoc 11 elst)))
  215.       )
  216.       ( (member (cdr (assoc 0 elst)) '("CIRCLE" "ARC"))
  217.         (setq di1 0.0
  218.               di2 (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent))
  219.               inc (/ di2 (1+ (fix (* 35.0 (/ di2 (cdr (assoc 40 elst)) (+ pi pi))))))
  220.               fun (if (vlax-curve-isclosed ent)
  221.         )
  222.         (while (fun di1 di2)
  223.           (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  224.                 di1 (+ di1 inc)
  225.           )
  226.         )
  227.         lst
  228.       )
  229.       ( (or (eq (cdr (assoc 0 elst)) "LWPOLYLINE")
  230.             (and (eq (cdr (assoc 0 elst)) "POLYLINE") (zerop (logand (cdr (assoc 70 elst)) 80)))
  231.         )
  232.         (setq par 0)
  233.         (repeat (fix (1+ (vlax-curve-getendparam ent)))
  234.           (if (setq der (vlax-curve-getsecondderiv ent par))
  235.             (if (equal der '(0.0 0.0 0.0) 1e-8)
  236.               (setq lst (cons (vlax-curve-getpointatparam ent par) lst))
  237.               (if (setq rad (distance '(0.0 0.0) (vlax-curve-getfirstderiv ent par))
  238.                         di1 (vlax-curve-getdistatparam ent par)
  239.                         di2 (vlax-curve-getdistatparam ent (1+ par))
  240.                   )
  241.                 (progn
  242.                   (setq inc (/ (- di2 di1) (1+ (fix (* 35.0 (/ (- di2 di1) rad (+ pi pi)))))))
  243.                   (while (
  244.                     (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  245.                           di1 (+ di1 inc)
  246.                     )
  247.                   )
  248.                 )
  249.               )
  250.             )
  251.           )
  252.           (setq par (1+ par))
  253.         )
  254.         (if (or (vlax-curve-isclosed ent) (equal '(0.0 0.0 0.0) der 1e-8))
  255.           lst
  256.           (cons (vlax-curve-getendpoint ent) lst)
  257.         )
  258.       )
  259.       ( (eq (cdr (assoc 0 elst)) "ELLIPSE")
  260.         (setq di1 (vlax-curve-getdistatparam ent (vlax-curve-getstartparam ent))
  261.               di2 (vlax-curve-getdistatparam ent (vlax-curve-getendparam   ent))
  262.               di3 (* di2 (/ (+ pi pi) (abs (- (vlax-curve-getendparam ent) (vlax-curve-getstartparam ent)))))
  263.         )
  264.         (while (
  265.             (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  266.                   der (distance '(0.0 0.0) (vlax-curve-getsecondderiv ent (vlax-curve-getparamatdist ent di1)))
  267.                   di1 (+ di1 (/ di3 (1+ (fix (/ 35.0 (/ di3 der (+ pi pi)))))))
  268.             )
  269.         )
  270.         (if (vlax-curve-isclosed ent)
  271.           lst
  272.           (cons (vlax-curve-getendpoint ent) lst)
  273.         )
  274.       )
  275.       ( (eq (cdr (assoc 0 elst)) "SPLINE")
  276.         (setq di1 (vlax-curve-getdistatparam ent (vlax-curve-getstartparam ent))
  277.               di2 (vlax-curve-getdistatparam ent (vlax-curve-getendparam   ent))
  278.               inc (/ di2 25.0)
  279.         )
  280.         (while (
  281.           (setq lst (cons (vlax-curve-getpointatdist ent di1) lst)
  282.                 di1 (+ di1 inc)
  283.           )
  284.         )
  285.         (if (vlax-curve-isclosed ent)
  286.           lst
  287.           (cons (vlax-curve-getendpoint ent) lst)
  288.         )
  289.       )
  290.     )
  291.   )
  292.   (defun trp ( m )
  293.     (apply 'mapcar (cons 'list m))
  294.   )
  295.   (defun mxm ( m n )
  296.     ((lambda ( a ) (mapcar '(lambda ( r ) (mxv a r)) m)) (trp n))
  297.   )
  298.   (defun mxv ( m v )
  299.     (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
  300.   )
  301.   (defun _blockpreview ( blk key )
  302.     (start_image key)
  303.     (fill_image 0 0 (dimx_tile key) (dimy_tile key) 0)
  304.     (LM:BlockPreview key blk 5)
  305.     (end_image)
  306.   )
  307.   (defun _blockpreview-highlight ( blk key / x0 y0 x y )
  308.     (start_image key)
  309.     (fill_image 0 0 (dimx_tile key) (dimy_tile key) 0)
  310.     (LM:BlockPreview key blk 5)
  311.     (setq x0 0 y0 0 x (dimx_tile key) y (dimy_tile key))
  312.     (repeat 4
  313.       (vector_image x0 y0 x y0 1)
  314.       (vector_image x y0 x y 1)
  315.       (vector_image x y x0 y 1)
  316.       (vector_image x0 y x0 y0 1)
  317.       (setq x0 (1+ x0) y0 (1+ y0) x (1- x) y (1- y))
  318.     )
  319.     (end_image)
  320.   )
  321.   (defun _ins ( bln )
  322.     (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "_.-INSERT\n" bln "\n"))
  323.   )
  324.   (while (setq def (tblnext "BLOCK" (null def)))
  325.     (if
  326.       (and
  327.         (= 0 (logand 125 (cdr (assoc 70 def))))
  328.         (not (wcmatch (cdr (assoc 2 def)) "`_*,`**,*|*"))
  329.       )
  330.       (setq lst (cons (cdr (assoc 2 def)) lst))
  331.     )
  332.   )
  333.   (cond
  334.     ( (null (setq lst (vl-sort lst '
  335.       (princ "\nNo blocks found in drawing.")
  336.     )
  337.     ( (null
  338.         (and
  339.           (setq tmp (vl-filename-mktemp nil nil ".dcl"))
  340.           (setq des (open tmp "w"))
  341.           (foreach line
  342.            '(
  343.               "blockpreview : dialog"
  344.               "{"
  345.               "    label = "Block Preview";"
  346.               "    initial_focus = "lst";"
  347.               "    spacer;"
  348.               "    : row"
  349.               "    {"
  350.               "    : column"
  351.               "    {"
  352.               "        : list_box { key = "lst"; width = 30.0; fixed_width = true; }"
  353.               "    }"
  354.               "    : column"
  355.               "    {"
  356.             )
  357.             (write-line line des)
  358.           )
  359.           (setq k 0)
  360.           (setq q (fix (1+ (sqrt (- (length lst) 0.1)))))
  361.           (repeat (expt q 2)
  362.             (setq k (1+ k))
  363.             (cond
  364.               ( (= 1 q)
  365.                 (write-line " : row" des)
  366.                 (write-line " {" des)
  367.                 (foreach line
  368.                   (list
  369.                       "        : image"
  370.                       "        {"
  371.                       (strcat "            key = "img" (itoa k) "";")
  372.                       (strcat "            width = " (rtos (* (/ q 2.0) (/ 100.0 (expt q 2))) 2 1) ";")
  373.                       "            aspect_ratio = 1.0;"
  374.                       "            fixed_width = true;"
  375.                       "            fixed_height = true;"
  376.                       "        }"
  377.                   )
  378.                   (write-line line des)
  379.                 )
  380.                 (write-line " }" des)
  381.               )
  382.               ( (= 0 (rem (1- k) q))
  383.                 (write-line " : row" des)
  384.                 (write-line " {" des)
  385.                 (foreach line
  386.                   (list
  387.                       "        : image"
  388.                       "        {"
  389.                       (strcat "            key = "img" (itoa k) "";")
  390.                       (strcat "            width = " (rtos (* (/ q 2.0) (/ 100.0 (expt q 2))) 2 1) ";")
  391.                       "            aspect_ratio = 1.0;"
  392.                       "            fixed_width = true;"
  393.                       "            fixed_height = true;"
  394.                       "        }"
  395.                   )
  396.                   (write-line line des)
  397.                 )
  398.               )
  399.               ( (= (1- q) (rem (1- k) q))
  400.                 (foreach line
  401.                   (list
  402.                       "        : image"
  403.                       "        {"
  404.                       (strcat "            key = "img" (itoa k) "";")
  405.                       (strcat "            width = " (rtos (* (/ q 2.0) (/ 100.0 (expt q 2))) 2 1) ";")
  406.                       "            aspect_ratio = 1.0;"
  407.                       "            fixed_width = true;"
  408.                       "            fixed_height = true;"
  409.                       "        }"
  410.                   )
  411.                   (write-line line des)
  412.                 )
  413.                 (write-line " }" des)
  414.               )
  415.               ( t
  416.                 (foreach line
  417.                   (list
  418.                       "        : image"
  419.                       "        {"
  420.                       (strcat "            key = "img" (itoa k) "";")
  421.                       (strcat "            width = " (rtos (* (/ q 2.0) (/ 100.0 (expt q 2))) 2 1) ";")
  422.                       "            aspect_ratio = 1.0;"
  423.                       "            fixed_width = true;"
  424.                       "            fixed_height = true;"
  425.                       "        }"
  426.                   )
  427.                   (write-line line des)
  428.                 )
  429.               )
  430.             )
  431.           )
  432.           (foreach line
  433.            '(
  434.                 "    }"
  435.                 "    }"
  436.                 "    spacer;"
  437.                 "    ok_cancel;"
  438.                 "}"
  439.             )
  440.             (write-line line des)
  441.           )
  442.           (not (setq des (close des)))
  443.           (
  444.           (new_dialog "blockpreview" dcl)
  445.         )
  446.       )
  447.       (princ "\nUnable to load dialog.")
  448.     )
  449.     ( t
  450.       (start_list "lst")
  451.       (foreach x lst (add_list x))
  452.       (end_list)
  453.       (set_tile "lst" "0")
  454.       (setq bln (nth 0 lst))
  455.       (setq k 0)
  456.       (foreach x lst
  457.         (setq k (1+ k))
  458.         (if (= k 1)
  459.           (_blockpreview-highlight (nth 0 lst) "img1")
  460.           (_blockpreview (nth (1- k) lst) (strcat "img" (itoa k)))
  461.         )
  462.       )
  463.       (action_tile "lst" "(progn(setq k 0)(foreach x lst (setq k (1+ k))(_blockpreview (nth (1- k) lst) (strcat "img" (itoa k))))(_blockpreview-highlight (setq bln (nth (atoi $value) lst)) (strcat "img" (itoa (1+ (atoi $value))))))")
  464.       (action_tile "accept" "(progn(_ins bln)(done_dialog 1))")
  465.       (action_tile "cancel" "(done_dialog 0)")
  466.       (start_dialog)
  467.     )
  468.   )
  469.   (*error* nil)
  470. )
回复

使用道具 举报

72

主题

738

帖子

75

银币

中流砥柱

Rank: 25

铜币
957
发表于 2021-1-2 08:12:15 | 显示全部楼层
只是另一种方式...
启动“AutoCAD设计中心”-命令ADC...
转到块-它将缓存数据,您将预览DWG的所有块-这将是真正的缩略图,而不是像李的块预览只有曲线...所以这样更好...然后你可以双击你想要插入的块...
这都是内置的...
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2021-4-30 03:49:36 | 显示全部楼层
几乎每个人都对频繁的弹出窗口感到恼火。但是你知道,我们永远无法摆脱它。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2021-4-30 12:16:45 | 显示全部楼层
是的,烦人的弹出窗口
我的许可证仍处于不确定状态
有不允许我使用合法获得的许可证的判例
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2021-4-30 19:21:37 | 显示全部楼层
当您使用“插入”命令并浏览到图形块的文件路径时,可能会发生这种情况。这些块文件是否在同一目录中?只是一个猜测。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 09:54 , Processed in 1.140263 second(s), 72 queries .

© 2020-2025 乐筑天下

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