明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 445|回复: 2

大家看看这程序得怎么写?

[复制链接]
发表于 2021-9-15 08:10 | 显示全部楼层 |阅读模式
1明经币
;;;编一个功能的程序
;;;创造动态图块选择集,获取选择集的基点坐标,图块的旋转角度,选择集图元的规格值
;;;如果角度是0 180,取坐标X值, 将所有坐标X(list)相减,得到一个值。将选择集图元移动x
;;;如果角度是90 270,取坐标y值, 将所有坐标y(list)相减,得到一个值。将选择集图元移动y
;;;下段代码功能,读取动态块的自定义属性!
;;;附件中附有动态块
(defun c:tt (/ obj pros proslst)
  (setq obj (vlax-ename->vla-object (car (entsel))))
  (setq Pros (vlax-invoke obj 'GetDynamicBlockProperties))
  (setq        Proslst
         (mapcar
           '(lambda (X)
              (cons (vlax-get X 'PropertyName) (vlax-get X 'Value))
            )
           Pros
         )
  )
  (princ proslst)
  (princ)
)



附件: 您需要 登录 才可以下载或查看,没有账号?注册
 楼主| 发表于 2021-9-18 15:17 | 显示全部楼层
没有大神试试么,速度来了哈,自己顶一下
回复

使用道具 举报

 楼主| 发表于 2021-9-18 15:34 | 显示全部楼层
附上段院长的代码,自定义函数部分没有研究明白
  1. defun c:tt () ;tt(动态块排版)
  2.   (xyp-Start)
  3.   (defun abc (s1 / ob dp a)
  4.     (setq ob (vlax-ename->vla-object s1)
  5.           dp (vla-getdynamicblockproperties ob)
  6.           a  (car (vlax-safearray->list (vlax-variant-value dp)))
  7.           a  (distof (vlax-get a 'Value))
  8.     )
  9.   )
  10.   (if (setq ss (ssget '((0 . "insert"))))
  11.     (progn
  12.       (setq lst        (vl-sort (xyp-Ss2List ss)
  13.                          '(lambda (x y) (< (car (xyp-9pt x 1)) (car (xyp-9pt y 1))))
  14.                 )
  15.             p0        (xyp-DXF 10 (car lst))
  16.       )
  17.       (foreach s1 lst
  18.         (xyp-move s1 (xyp-DXF 10 s1) p0)
  19.         (setq p0 (xyp-Pt2X p0 (abc s1)))
  20.       )
  21.     )
  22.   )
  23.   (xyp-End)
  24. )
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 17:03 , Processed in 0.180998 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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