明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2285|回复: 9

快速等分,等分点上插入的是块,如何解决呢

[复制链接]
发表于 2011-6-20 11:05 | 显示全部楼层 |阅读模式
下面是论坛朋友贴出的一个对直线快速等分程序,但是用点等分的,我希望是用块替代,即在等分点上插入块,最好在直线端点上也插入块,哪位高手能帮忙修改一下吗?谢谢!

(defun C:test ()
   (prompt "批量选择等分....")
   
   (setq ss (ssget)
        Num (getint "多少等分?: ")
          i  0
   )
   (while (setq ee (ssname ss i))
     (command "Divide" ee Num)
     (setq i (1+ i))
   )
)
发表于 2011-6-20 11:15 | 显示全部楼层
本程序任何曲线均可等分
(defun loc:intervalMeasure (curve    sections /               len
                            i             times    point    blockref
                            dist     startpa  endpa
                           )
  (setq startpa (vlax-curve-getStartParam curve))
  (setq endpa (vlax-curve-getEndParam curve))
  (setq startpa (vlax-curve-getDistAtParam curve startpa))
  (setq endpa (vlax-curve-getDistAtParam curve endpa))
  (setq        len  (- endpa startpa)
        i    0
        dist 0
  )
(setq interval (/ len sections))
  (setq point2 (vlax-make-safearray vlax-vbDouble '(0 . 2)))
  (while (< dist len)
    (setq point (vlax-curve-getPointAtDist curve dist))
    (vlax-safearray-fill point2 point)
    (setq blockref (vla-insertblock
                     *ModelSpace* point2 "YourBlockName" 1.0 1.0 1.0 0.0)
    )
    (setq i (1+ i))
    (setq dist (* interval i))
  )
  (setq point (vlax-curve-getEndPoint curve))
  (vlax-safearray-fill point2 point)
  (setq        blockref (vla-insertblock
                   *ModelSpace*        point2 "YourBlockName" 1.0 1.0 1.0        0.0)
  )
)
发表于 2011-6-20 11:23 | 显示全部楼层
可以插入块啊,输入B选项就行啊!g:/1.jpg
把命令函数行改成如下就行!
(command "divide" aa "b" "gc119" "n" 3)
“gc119”是你要插入的块的名称!
 楼主| 发表于 2011-6-20 12:52 | 显示全部楼层
回复 zyhandw 的帖子

谢谢你回复,好像没用啊,能粘贴全代码出来吗

点评

说的对,有命令不用,自己写,太辛苦了。  发表于 2012-5-2 12:36

评分

参与人数 1金钱 +20 收起 理由
10410024 + 20 神马都是浮云

查看全部评分

发表于 2011-6-20 15:50 | 显示全部楼层
全代码还是你的那一段代码!
只不过就改了带有command的那一行
(defun C:test ()
   (prompt "批量选择等分....")
   (setq ss (ssget) Num (getint "多少等分?: ") i 0)
   (while (setq ee (ssname ss i))
     (command "divide" ee "b" "g:/gc119.dwg" "n" 3)
     (setq i (1+ i))
   )
)
发表于 2011-6-20 15:50 | 显示全部楼层
全代码还是你的那一段代码!
只不过就改了带有command的那一行
(defun C:test ()
   (prompt "批量选择等分....")
   (setq ss (ssget) Num (getint "多少等分?: ") i 0)
   (while (setq ee (ssname ss i))
     (command "divide" ee "b" "gc119" "n" 3)
     (setq i (1+ i))
   )
)
发表于 2011-6-20 16:01 | 显示全部楼层
不过我没改进,在端点上插入块,我只是提示divide本身就有这个功能!
你可以参考yarp的等分程序,再加上插入图块的代码就可以了!
发表于 2012-5-2 10:16 | 显示全部楼层
我来测试下
发表于 2012-5-2 17:12 | 显示全部楼层
学习学习~~~~
发表于 2012-5-3 23:13 来自手机 | 显示全部楼层
本帖最后由 kwok 于 2012-5-4 13:07 编辑

收藏起来......
(defun C:test ()
    (prompt "批量选择等分....")
    (setq ss (ssget) Num (getint "多少等分?: ") i 0)
    (while (setq ee (ssname ss i))
      (command "divide" ee "b" "块名" "" Num)
      (setq i (1+ i))
    )
)
测试了一下,可以批量了.之前我是一个一个选的.
做的块最好指定好基点.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 11:27 , Processed in 0.154304 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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