乐筑天下

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

[编程交流] 在选定对象之间插入块

[复制链接]

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:27:42 | 显示全部楼层 |阅读模式
我有一些代码来自一个曾经为我们工作的人,在那里它插入了一个块,其距离值位于两点之间的中点。我希望能够将其调整到默认情况下做相同的事情,但它将块放在基于定位值的分组选择的每个极块之间,类似于此线程,它根据这些值调整数字。。。
 
http://www.cadtutor.net/forum/showthread.php?58422-属性重新编号&p=395948&viewfull=1#post395948
 
... 用户不必点击每个极点上的点。
 
随附的是LISP和DWG块。
EXADO。图纸
EXADO_Main-0001。lsp
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:33:23 | 显示全部楼层
有人能帮忙吗?
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:35:57 | 显示全部楼层
我试着用这个做一些事情,虽然在某些方面是错误的。
 
  1. (defun c:STADO  (/ adoc i SelSet StrValidate AttVal StaList)
  2. (vl-load-com)
  3. (setq adoc (vla-get-activedocument (vlax-get-acad-object))
  4.    i    0)
  5. (if (ssget ":L" '((0 . "INSERT")(2 . "`*U*,POLE-STA")))
  6.      (cond (
  7.      (vlax-for Sta  (setq SelSet (vla-get-activeselectionset adoc))
  8. (if (and (equal (vla-get-effectivename sta) "pole-sta")
  9.        (/= (setq StrValidate (vla-get-textstring (car (setq AttVal
  10.                     (vlax-invoke
  11.                       Sta
  12.                       'GetAttributes))))) ""))
  13.          (setq StaList
  14.             (cons
  15.               (list StrValidate (nth 26 AttVal))
  16.               StaList))
  17.                  )
  18.         )
  19.      (foreach
  20.          Blk  (vl-sort
  21.                 StaList
  22.                 (function (lambda (p1 p2) (< (car p1) (car p2)))))
  23.     (setq p1 (vlax-get p1 'insertionpoint))
  24.     (setq p2 (vlax-get p2 'insertionpoint))
  25.         (setq adodist (distance p1 p2))
  26.     (setq adodist (rtos adodist 2 0))
  27.     (setq adomid (mapcar '+ p1 (mapcar '/ (mapcar '- p2 p1) '(2.0 2.0 2.0))))
  28.     (setq adoang (angle p1 p2))     
  29.     (command "-insert" "aerial distance -dyn" adomid "" (angtos adoang) adodist "")
  30.     (cadr Blk) (itoa (setq i (1+ i))))
  31.      )
  32.     )
  33.    (vla-delete SelSet)
  34. )
  35. (princ)
  36. )

 
我得到错误“错误的参数类型:VLA-OBJECT nil”。我相信这是在lambda和p1/p2变量编码的底部。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:41:53 | 显示全部楼层
  1. (defun c:STADO  (/ AddOffset adoc SelSet StrValidate AttVal StaList p1 p2 dblk)
  2. (vl-load-com)
  3. [color=blue](defun AddOffset  (lst)[/color]
  4. [color=blue]     (list (+ (car lst) 11.25) (- (cadr lst) 11.0135) 0.0))      [/color]
  5. (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  6. (if (ssget ":L" '((0 . "INSERT")(2 . "`*U*,POLE-STA")))
  7. (cond (
  8. (vlax-for
  9.       Sta
  10.          (setq SelSet (vla-get-activeselectionset adoc))
  11.      (if (and (equal (vla-get-effectivename sta) "pole-sta")
  12.               (/= (setq StrValidate
  13.                              (vla-get-textstring
  14.                                    (car (setq AttVal
  15.                                                    (vlax-invoke
  16.                                                          Sta
  17.                                                          'GetAttributes)))))
  18.                   ""))
  19.            (setq StaList
  20.                       (cons
  21.                             (list StrValidate (nth 26 AttVal))
  22.                             StaList))
  23.            )
  24.      )
  25. [color=blue](setq StaList[/color]
  26.           (vl-sort
  27.                 StaList
  28.                 (function (lambda (p1 p2) (< (car p1) (car p2)))))[color=blue])[/color]
  29. [color=blue](while (and (setq p1 (car StaList))[/color]
  30. [color=blue]           (setq p2 (cadr Stalist)))[/color]
  31.      (setq p1     [color=blue](AddOffset (vlax-get (cadr p1) 'insertionpoint))[/color]
  32.            p2     [color=blue](AddOffset (vlax-get (cadr p2) 'insertionpoint))[/color]
  33.            adodist (distance p1 p2)
  34.            adodist (rtos adodist 2 0)
  35.            adomid  [color=blue](mapcar (function (lambda (a b) (/ (+ a b) 2.)))[/color]
  36.                            p1
  37.                            p2)
  38.            adoang  (angle p1 p2))
  39.   [color=blue]  (setq dblk (vlax-invoke[/color]
  40. [color=blue]                      (vlax-get (vla-get-ActiveLayout adoc) 'Block)[/color]
  41. [color=blue]                      'insertblock[/color]
  42. [color=blue]                      adomid[/color]
  43. [color=blue]                      "aerial distance -dyn"[/color]
  44. [color=blue]                      1[/color]
  45. [color=blue]                      1[/color]
  46. [color=blue]                      1[/color]
  47. [color=blue]                      adoang)[/color]
  48. [color=blue]           )[/color]
  49.     [color=blue](vla-put-textstring[/color]
  50. [color=blue]           (car (vlax-invoke dblk 'Getattributes))[/color]
  51. [color=blue]           adodist)[/color]
  52. [color=blue]     (setq Stalist (cdr StaList))[/color]
  53.      )
  54. )
  55. )
  56. (vla-delete Selset)
  57. )
  58. (princ)
  59. )
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:43:51 | 显示全部楼层
谢谢pBe!
 
这是一个发生小错误的图像。
 
102742su7tmf33fx3sincv.jpg
 
我绕着方块旋转,用一条不直的磁极线进行测试。中间派曾经以错误的角度和价值出现。下面绿色的是正确的。
 
然后,我在末端重新插入最后一根杆子,它以正确的角度进入,但输入的值为26’,两者之间的距离为25.0000。
 
代码似乎取自原始插入点,而不是当前插入点。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 09:49:27 | 显示全部楼层
奶酪和米饭
 
... 这一定是我的浏览器,甚至看不到你两个帖子中的图片,这件事是从一个月前it人员屏蔽这个网站开始的。现在我找到了一种方法来解决这个问题。
但是这个网页并不像以前那样。真倒霉
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:53:19 | 显示全部楼层
它可能阻塞了photobucket。我听说有些地方这样做。
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 09:54:10 | 显示全部楼层
好的,我认为这只是文件有点问题,插入和角度在一个新的图纸上工作,很好,按照计划和要求。但是,当我在页面选项卡的视口中运行程序时,它会在图纸空间而不是模型空间中插入块。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 10:00:24 | 显示全部楼层
 
尝试直接在这个网站上发布图片,很多人都有自己的工作区网站,比如photobucket。这减少了其他人可以提供的帮助。只需“Go Advanced”“Manage Attachments”“Browse”“Upload”。
回复

使用道具 举报

27

主题

126

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-6 10:04:03 | 显示全部楼层
 
我本来是这样做的,但得到了错误
 
“出现以下错误:
对齐文本。bmp:无效文件“
 
可以通过网站上传的图像的大小限制是多少?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 03:12 , Processed in 0.938118 second(s), 74 queries .

© 2020-2025 乐筑天下

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