20060510412 发表于 2018-9-28 16:59:46

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

本帖最后由 20060510412 于 2018-9-28 21:10 编辑

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


llsheng_73 发表于 2018-9-28 23:58:24

本帖最后由 llsheng_73 于 2018-9-29 00:23 编辑

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

20060510412 发表于 2018-9-29 15:17:19

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

请教一下,这个程序是不是还可以更进一步,将数量那个参数设置个默认值,而且有记忆功能?

20060510412 发表于 2018-9-29 09:47:59

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

谢谢您的热心,辛苦了!我刚刚入门lisp,读懂代码都比较困难,所以只能先厚着脸皮求代码了

panliang9 发表于 2018-9-29 09:04:37

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

非常好用,谢谢"llsheng_73" 长老

20060510412 发表于 2018-9-29 09:46:45

panliang9 发表于 2018-9-29 09:04
非常好用,谢谢"llsheng_73" 长老

难道你也有这个需求么{:1_1:}

e2002 发表于 2018-9-30 16:20:38

建议改成n为可变的动态方式,A增加1/S减少1

20060510412 发表于 2018-9-30 18:11:07

e2002 发表于 2018-9-30 16:20
建议改成n为可变的动态方式,A增加1/S减少1

这样就更完美了啊,哈哈

zmzk 发表于 2022-2-13 10:19:53

能不能改成 分空数?不想用直线根数那么分!

20060510412 发表于 2022-2-14 09:06:11

zmzk 发表于 2022-2-13 10:19
能不能改成 分空数?不想用直线根数那么分!

变量n直接加1就可以了
页: [1] 2
查看完整版本: 请问如何在两条平行线中均匀插入n根线段