xj6019 发表于 2020-9-17 10:52:52

求两端可以缩短指定长度轮流插入块的lsp

本帖最后由 xj6019 于 2020-9-17 21:53 编辑

拜托start4444老师解答一下吧,麻烦了。
发现几个问题,重新发帖,麻烦一起考虑一下好吗。之前问题表述的太乱了,整理一下想法,重新说明:分两种情况下使用,代码分开处理,大体的处理方式如下:
1,新作图情况下:
(defunC:TT()
(两端-50最大间隔380块名);不用输入直接设置好,计算要求,参照5楼附件说明,但不再考虑单独设置S键。
(TTS)
(插入完成后删掉那条线)
)

(defunTTS();子函数1 ,线为直线,圆,多段线,样条曲线,一次支持全了吧,方便以后使用
( 创建列表)
(列表插入)
);结束
我有好几个固定块名的块经常插入,函数要方便套用.

子函数1里面包含子函数2(等分函数)



2.平时改图的情况下;
(defunC:TT( ) ; ;
(最大间隔数350);;
;;这里设置可以输入吧,默认间隔350,但是代码里面计算的时候要+30,就是设置一个350左右的可浮动数值空间,可输入是为了偶尔的特殊情况,后期使用中视情况再自行调整。
(选择块1   选择块2)
(插入还是复制都行   子函数2的列表);参照之前的等分函数套用就行,代码已经贴在11楼了,列表剔除最两端的两个点
(列表插入或者复制)




其中第二种情况实现的是,不再输入具体的间隔数,也就是不用再提前计算了,这样使用起来要方便的多。麻烦start4444老师了,拜托。
今天想法有点乱,开始自己也没有一个大的方向,一会一个想法,自己都快懵了。后来逐渐才思路固定下来。为想法没固定前,发的乱七八糟思想不统一的各个回复和造成的麻烦,在此表示抱歉。
表述完毕!
静等佳作!!

















start4444 发表于 2020-9-17 10:52:53

试试看,应该差不多的

xj6019 发表于 2020-9-17 10:57:31

搞成类似这样就行,子函数弄好后,我经常插入的好几个固定的块,每个块我后期单独套一遍子函数,用好几个命令单独调用直接插入。


(defun c:NM (/ twd jgd bname1 i en ent plist p1 plast obj zd zdnew pn1 pn2)
        (vl-load-com)
        (setq twd50
        jgd 350       
        bname1"BLOCK BS1"
        (setq en (car (entsel "\n請選取多段線:")) ent (entget en) plist (vertexs en) p1 (car plist) plast (last plist))
        (if (= twd nil) (setq twd 50)) (if (= jgd nil) (setq jgd 350))
(WOSHISHI)
)

(defunWOSHISHI()
        (setq obj (vlax-ename->vla-objecten))
        (setq zd (abs (- (vlax-curve-getDistAtPoint obj p1) (vlax-curve-getDistAtPoint obj plast))) zdnew (- zd (* twd 2)))
        ................
...................
..............

xj6019 发表于 2020-9-17 11:23:41

间隔计算的方法感觉好像不是很合适吧,麻烦start4444老师确认一下,比方说我一般的间距都需要在350左右,我设置的时候把最大间距设置成380,但是发现平分的时候,代码不是按照最少的间隔数等分开的呢,也麻烦调一下代码好吗,需要设置好最大间隔后,等分数为最最小的等分数。

start4444 发表于 2020-9-17 12:01:23

感觉好复杂,你发个示意图看看

xj6019 发表于 2020-9-17 12:25:56

start4444 发表于 2020-9-17 12:01
感觉好复杂,你发个示意图看看

好的,请参照说明文件,可以抛开以前那个帖子,后来我发现,我的需求和那个其实还是有不少区别的。

xj6019 发表于 2020-9-17 13:02:49

start4444 发表于 2020-9-17 12:01
感觉好复杂,你发个示意图看看

打开显示正常吗,看一下截图

xj6019 发表于 2020-9-17 13:25:33

start4444 发表于 2020-9-17 12:01
感觉好复杂,你发个示意图看看

如果可以的话,多支持几样线,线,斜线,圆弧,多段线,样条曲线,最好一次满足。如果非常麻烦的话,最少要满足线和圆弧,这两种是最经常遇到的。

start4444 发表于 2020-9-17 13:45:45

你以前不是已经有个贴说是等分问题的,和这个差不多了

xj6019 发表于 2020-9-17 14:03:11

start4444 发表于 2020-9-17 13:45
你以前不是已经有个贴说是等分问题的,和这个差不多了

是的,两种情况都分析了一下,之前的那个帖子适合在原图基础上改图的时候用,已经两端各有块了,然后中间等分插入,好处是不局限一定要有直线,但是对圆弧的状况无效。发现这个帖子后,开始没细想,后来发现,如果按照这个方式设定好计算方法,那么就不用脑袋计算这段间距需要分几段,然后再输入等分数了,还能处理圆弧时等分的情况,这个代码更适合做新图的时候,在四周插入孔的块,另外这个这个代码做出来后,还是要和之前的那个代码配合使用,各补所长,各有各自情况下的优势吧,或者是不是有更好的方式,我现在还没想到。
页: [1] 2
查看完整版本: 求两端可以缩短指定长度轮流插入块的lsp