乐筑天下

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

[编程交流] 是否有类似Lisp程序的度量值a

[复制链接]

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:59:59 | 显示全部楼层 |阅读模式
是否有类似lisp的测量和分割功能,可以将块与多段线对齐?有点像执行MEASURE或DIVIDE命令,当它提示“将块与对象对齐”时忘记应用“YES”
 
原因是我们正在使用第三方软件land/X,它的模块保存着某种智能数据。简单地将其作为块插入将无法访问块数据。即使是COPY命令也会让事情变得一团糟。所以我要做的是沿着我需要灌溉头的地方画一条线来连接一个许可证。然后,我根据灌溉头喷洒半径划分或测量线,然后将灌溉头沿节点向下放置。然后我旋转它们,使它们与曲线的中心点对齐,或沿pline本身对齐。
 
对于几个区块来说似乎很容易,但对于一个大型站点来说,在超过10000个单独区块的情况下这样做会让你发疯。
 
谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:09:21 | 显示全部楼层
在此处搜索“pline链测长度”这用于以给定间距沿pline写入运行链测长度。如果是一个良好的起点,请将“添加文本”更改为“添加块”,以确保以后的版本自动旋转文本。
 
这里至少有两个版本。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:18:53 | 显示全部楼层
http://www.cadtutor.net/forum/showthread.php?46309-复制长曲线。LSP动态分割测量
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:29:29 | 显示全部楼层
@alanjt:序列非常接近,除了我不是复制,而是简单地旋转以对齐,块已经就位,但需要一个lisp将每个块与pline对齐。
 
我的顺序是绘制PLINE,然后根据灌溉头喷雾半径进行测量,然后在每个节点处插入其块,0旋转。然后我必须回到每一个,沿着柱脚旋转。
 
问题是,由于每个块都有数据,我无法复制或使用“测量和分割”中的“块”选项。每个块都有数据来确定大小和psi计算。只需复制对象即可删除数据。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:34:24 | 显示全部楼层
我写了一个旋转一,但忘了张贴。我早上一到办公室就发邮件。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:43:31 | 显示全部楼层
 

 
http://www.cadtutor.net/forum/showthread.php?47495-将块与曲线对齐
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:59:58 | 显示全部楼层
  1. (defun c:RAC (/ ss ent)
  2. ;; Rotate blocks Along Curve
  3. ;; Required subroutines: AT:GetSel, AT:AngleAtPoint
  4. ;; Alan J. Thompson, 12.20.10
  5. (vl-load-com)
  6. (if (and (setq ss (ssget "_:L" '((0 . "INSERT"))))
  7.           (setq ent
  8.                  (car
  9.                    (AT:GetSel
  10.                      entsel
  11.                      "\nSelect curve to rotate objects along: "
  12.                      (lambda (x)
  13.                        (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getEndParam (list (car x))))
  14.                        )
  15.                      )
  16.                    )
  17.                  )
  18.           )
  19.      )
  20.    (progn
  21.      (vlax-for x (setq ss (vla-get-activeselectionset
  22.                             (cond (*AcadDoc*)
  23.                                   ((setq *AcadDoc* (vla-get-activedocument
  24.                                                      (vlax-get-acad-object)
  25.                                                    )
  26.                                    )
  27.                                   )
  28.                             )
  29.                           )
  30.                  )
  31.        (vl-catch-all-apply
  32.          (function
  33.            (lambda (/)
  34.              (vla-put-rotation
  35.                x
  36.                (AT:AngleAtPoint
  37.                  ent
  38.                  (vlax-curve-getClosestPointToProjection ent (vlax-get x 'InsertionPoint) '(0 0 1))
  39.                )
  40.              )
  41.            )
  42.          )
  43.        )
  44.      )
  45.      (vla-delete ss)
  46.    )
  47. )
  48. (princ)
  49. )
  50. (defun AT:GetSel (meth msg fnc / ent good)
  51. ;; meth - selection method (entsel, nentsel, nentselp)
  52. ;; msg - message to display (nil for default)
  53. ;; fnc - optional function to apply to selected object
  54. ;; Ex: (AT:GetSel entsel "\nSelect arc: " (lambda (x) (eq (cdr (assoc 0 (entget (car x)))) "ARC")))
  55. ;; Alan J. Thompson, 05.25.10
  56. (setvar 'errno 0)
  57. (while (not good)
  58.    (setq ent (meth (cond (msg)
  59.                          ("\nSelect object: ")
  60.                    )
  61.              )
  62.    )
  63.    (cond
  64.      ((vl-consp ent)
  65.       (setq good (cond ((or (not fnc) (fnc ent)) ent)
  66.                        ((prompt "\nInvalid object!"))
  67.                  )
  68.       )
  69.      )
  70.      ((eq (type ent) 'STR) (setq good ent))
  71.      ((setq good (eq 52 (getvar 'errno))) nil)
  72.      ((eq 7 (getvar 'errno)) (setq good (prompt "\nMissed, try again.")))
  73.    )
  74. )
  75. )
  76. (defun AT:AngleAtPoint (e p)
  77. ;; Return angle along curve, at specified point (on curve)
  78. ;; e - valid curve (ENAME or VLA-OBJECT)
  79. ;; p - point on curve
  80. ;; Alan J. Thompson, 11.04.10
  81. (angle '(0. 0. 0.) (vlax-curve-getFirstDeriv e (vlax-curve-getParamAtPoint e p)))
  82. )
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:04:35 | 显示全部楼层
我会尝试两者,看看会发生什么。敬请期待。干杯
 
更新:
两者都很好!RAC和对象对齐。
 
对于RAC,我注意到无论对象的角度是什么,它都会使对象与柱脚垂直对齐。我的方向控制是这样设置的吗?,它总是默认为向东。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:10 , Processed in 0.513424 second(s), 68 queries .

© 2020-2025 乐筑天下

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