明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1281|回复: 10

[提问] 请问如何在两条平行线中均匀插入n根线段

[复制链接]
发表于 2018-9-28 16:59 | 显示全部楼层 |阅读模式
本帖最后由 20060510412 于 2018-9-28 21:10 编辑

在画钢筋图的时候,经常会有这种需求,就是将两个边界直线确定之后,在直线之中均匀生成若干条直线,请问高手可否帮忙写个程序,多谢。
进一步来说,是否可以将两个不平行的直线,通过扇形均布,插入若干条直线。
再进一步,两条曲线之间,均匀插入若干条曲线。
实际效果如下图所示(这个是收费软件中的一个功能,我想请教一下能否用lisp做出来):


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-9-28 23:58 | 显示全部楼层
本帖最后由 llsheng_73 于 2018-9-29 00:23 编辑

让现在这两条线张角大一些,两端用别的线边起来,多插入几根线看看它的效果?
看不到认为它就是平齐的吧,毕竟比圆弧分布简单些。。。
  1. (defun c:tt(/ e1 e2 p1 p2 p3 p4 n i)
  2.   (while(and(setq e1(ssget":E:S"'((0 . "line"))))
  3.       (setq e2(ssget":E:S"'((0 . "line"))))
  4.       (setq n(getint"插入直线数量")
  5.       n(if n n 1)))
  6.     (setq e1(entget(ssname e1 0))
  7.     p1(mapcar'+'(0 0)(cdr(assoc 10 e1)))
  8.     p2(mapcar'+'(0 0)(cdr(assoc 11 e1)))
  9.     e2(entget(ssname e2 0))
  10.     p3(mapcar'+'(0 0)(cdr(assoc 10 e2)))
  11.     p4(mapcar'+'(0 0)(cdr(assoc 11 e2))))
  12.     (if(inters p1 p3 p2 p4 t)(setq e1 p4 p4 p3 p3 e1))
  13.     (setq e1(/(distance p1 p3)(1+ n)1.)
  14.     e2(/(distance p2 p4)(1+ n)1.)
  15.     p3(angle p1 p3)
  16.     p4(angle p2 p4)
  17.     i 0)
  18.     (while(< i n)
  19.       (setq i(1+ i))
  20.       (entmakex(mapcar'cons'(0 10 11)(list"line"(polar p1 p3(* e1 i))(polar p2 p4(* e2 i))))))
  21.     ))


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2018-9-29 09:04 | 显示全部楼层
llsheng_73 发表于 2018-9-28 23:58
让现在这两条线张角大一些,两端用别的线边起来,多插入几根线看看它的效果?
看不到认为它就是平齐的吧, ...

非常好用,谢谢  "llsheng_73" 长老
 楼主| 发表于 2018-9-29 09:46 | 显示全部楼层
panliang9 发表于 2018-9-29 09:04
非常好用,谢谢  "llsheng_73" 长老

难道你也有这个需求么
 楼主| 发表于 2018-9-29 09:47 | 显示全部楼层
llsheng_73 发表于 2018-9-28 23:58
让现在这两条线张角大一些,两端用别的线边起来,多插入几根线看看它的效果?
看不到认为它就是平齐的吧, ...

谢谢您的热心,辛苦了!我刚刚入门lisp,读懂代码都比较困难,所以只能先厚着脸皮求代码了
 楼主| 发表于 2018-9-29 15:17 | 显示全部楼层
llsheng_73 发表于 2018-9-28 23:58
让现在这两条线张角大一些,两端用别的线边起来,多插入几根线看看它的效果?
看不到认为它就是平齐的吧, ...

请教一下,这个程序是不是还可以更进一步,将数量那个参数设置个默认值,而且有记忆功能?
发表于 2018-9-30 16:20 | 显示全部楼层
建议改成n为可变的动态方式,A增加1/S减少1
 楼主| 发表于 2018-9-30 18:11 | 显示全部楼层
e2002 发表于 2018-9-30 16:20
建议改成n为可变的动态方式,A增加1/S减少1

这样就更完美了啊,哈哈
发表于 2022-2-13 10:19 | 显示全部楼层
能不能改成 分空数?不想用直线根数那么  分!
 楼主| 发表于 2022-2-14 09:06 | 显示全部楼层
zmzk 发表于 2022-2-13 10:19
能不能改成 分空数?不想用直线根数那么  分!

变量n直接加1就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 06:07 , Processed in 0.193500 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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