明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2399|回复: 8

[求助]有没有人做过沿线布置块的程序啊?

[复制链接]
发表于 2006-3-22 16:52:00 | 显示全部楼层 |阅读模式

能不能提供思路或程序?

发表于 2009-6-10 21:43:00 | 显示全部楼层
沿线布置块的程序很好用,期待高手解答
回复 支持 1 反对 0

使用道具 举报

发表于 2006-3-23 10:48:00 | 显示全部楼层
我提供一个思路,可以取出任意曲线的长度,除等分数,求等分点,再在每一个等分点插入块,这时图块的比例就可以控制了。
回复 支持 1 反对 0

使用道具 举报

发表于 2006-3-23 06:33:00 | 显示全部楼层
是不是沿线阵列块,象measure的功能一样???
 楼主| 发表于 2006-3-23 10:30:00 | 显示全部楼层

非常感谢。

有点像,但是要可以输入图块的比例等其他东西。

measure有没有源程序啊?

 楼主| 发表于 2006-3-23 15:28:00 | 显示全部楼层
用什么方法求点啊?能不能利用measure和divide生成的点?
发表于 2006-3-23 15:34:00 | 显示全部楼层
sccat发表于2006-3-23 15:28:00用什么方法求点啊?能不能利用measure和divide生成的点?


也可以啊,取出每个点的坐标值,再插入块。

或者用函数vlax-curve-getPointAtParam求等分点

发表于 2006-3-23 16:19:00 | 显示全部楼层

这是以前为了解决设计中的块沿线布置写的一个,当时写的很笨,所以现在一直用别人的,不过可以发上来参考一下

(defun c:kll ()
  (if (= tgh3 nil)
    (setq tgh3 9)
  )
  (setq aa2 1
 er 2
  )
  (setvar "osmode" 0)
  (setvar "CMDECHO" 0)
  (while (/= er 1)
    (setq aa1 (entsel "\n请选择一个块:"))
    (if (= aa1 nil)
      (alert "你没选到东西,请重新选.

      退出按Esc")
      (setq er 1)
    )
  )
  (setq a2 (car aa1))
  (redraw a2 3)
  (setq a4  (entget a2)
 aa6 (assoc 2 a4)
 s1  (cdr aa6)
 xx1 (cdr (assoc 43 a4))
 x1  (cdr (assoc 10 a4))
  )

  (princ "\n请输入块分布间距<")
  (princ tgh3)
  (princ ">:")
  (setq p3 (getreal))
  (redraw a2 4)
  (if (= p3 nil)
    (setq p3 tgh3)
  )
  (setq tgh3 p3)
  (while
    (setq aa2 (entsel "\n请选择一条多段线:")

    )

     (setq a2a (car aa2))

     (if (= aa2 nil)
       (progn

  (exit)
       )
     )
     (setvar "osmode" 0)
     (setvar "CMDECHO" 0)
     (command "_measure" a2a "b" s1 "y" p3)
     (setq p1 (ssget "_P"))
     (setq bb1 (getstring "\n块布置的方向正确吗?(y/n)<y>:"))

     (if (or (= bb1 "n") (= bb1 "N"))
       (progn
  (setq p2  (sslength p1)
        p3a (- p2 1)
  )
  (repeat p2
    (setvar "osmode" 0)
    (setvar "CMDECHO" 0)
    (setq ss (ssname p1 p3a))
    (setq a4  (entget ss)

   x1  (cdr (assoc 10 a4))
   xx2 (cdr (assoc 43 a4))
    )

    (command "_rotate" ss "" x1 180)
    (if (/= xx1 xx2)
      (command "_scale" ss "" x1 xx1)
    )
    (setq p3a (- p3a 1))
  )
       )
       (progn
  (setq p2  (sslength p1)
        p3a (- p2 1)
  )
  (setq ss (ssname p1 p3a))
  (setq a4  (entget ss)

        x1  (cdr (assoc 10 a4))
        xx2 (cdr (assoc 43 a4))
  )
  (if (/= xx1 xx2)
    (repeat p2
      (setvar "osmode" 0)
      (setvar "CMDECHO" 0)
      (setq ss (ssname p1 p3a))
      (setq a4  (entget ss)

     x1  (cdr (assoc 10 a4))
     xx2 (cdr (assoc 43 a4))
      )

      (command "_scale" ss "" x1 xx1)
      (setq p3a (- p3a 1))
    )
  )
       )
     )
  )


  (princ)
)

发表于 2009-6-10 21:45:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 05:27 , Processed in 0.186747 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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