grantto19 发表于 2020-1-10 16:05:23

求助: 尺寸线等分辅助线 不能重复

先说明一下我的思路,由于工作中经常需要将一段折线在x轴的投影进行等分,需要写出以下命令,但是发现是一条竖线画了n遍,而不是画了n条线,查询pt0时,是最后一个需要的点

在说明一下我的变量,pts是起点,pte是终点,由于我只需要x轴坐标,所以xy坐标不做区分
pts至pte的长度为leng,每一小段的长度为0leng,xline的参数选择v,点的坐标选用(a/n+起点)的写法
用repeat和while都不行,请各位帮忙看看是啥原因,谢谢啦

(defun c:divide_dbe()
        (setvar "cmdecho" 0)
        (setq en (entsel "请选择等分的DBE尺寸:"))
        (setq n (getint "\n请输入分段数量:"))
        (setq en_data (entget (car en)))
        (setq pts (assoc 13 en_data))
        (setq ptsx (cadr pts))
        (setq pte (assoc 14 en_data))
        (setq ptex (cadr pte))
        (setq a (- n 1))
        (while a
                (setq leng (- ptex ptsx))
                (setq 0leng (/ leng n))
                (setq pt0x (+ ptsx (* a 0leng)))
                (setq pt0 (list pt0x 500))
                (setq pt0a (list pt0x 1000))
                (command "xline" "v" pt0 pt0a)
                (setq a (- a 1))
        )
        (prin1)
)

cq4920 发表于 2020-1-13 10:05:45

根据你的小插件该的小程序!还挺好用的!

(defun c:tt4(/ pt1 pt2 n )
      (setvar "cmdecho" 0)
      (setq pt1 (getpoint "\n 输入第一点:" ))
      (setq pt2 (getpoint pt1 "\n 输入第一点:" ))
              (setq n (getint "\n请输入分段数量:"))
              (setq leng (distance pt1 pt2))
      (setq 0leng (/ leng n))                                
      (setq a (- n 1))
      (repeat a
                (setq pt0 (polar pt1 (angle pt1 pt2) 0leng))
                (command "xline" "v" "non" pt0 "")
                (setq pt1 pt0)
      )
      (prin1)
)

start4444 发表于 2020-1-10 18:02:16

提取点代码写错了

(defun c:tt5()
        (setvar "cmdecho" 0)
        (setq en (entsel "请选择等分的DBE尺寸:"))
        (setq n (getint "\n请输入分段数量:"))
        (setq en_data (entget (car en)))
        (setq pts (cdr (assoc 10 en_data)))
        (setq pte (cdr (assoc 14 en_data)))
        (setq leng (cdr (assoc 42 en_data)))
        (setq 0leng (/ leng n) ang (+ (* 0.5 pi) (angle pts pte)))
        (setq a (- n 1))
        (repeat a
                (setq pt0 (polar ptsang0leng))
                (command "xline" "v" "non" pt0 "")
                (setq pts pt0)
        )
        (prin1)
)

grantto19 发表于 2020-1-13 09:25:02

start4444 发表于 2020-1-10 18:02
提取点代码写错了

(defun c:tt5()


谢谢,我明白了,是这句话末尾少了个“”
对了,问一下“non”是啥意思呢,不用两个点了吗

(command "xline" "v" "non" pt0 "")

start4444 发表于 2020-1-13 10:00:48

grantto19 发表于 2020-1-13 09:25
谢谢,我明白了,是这句话末尾少了个“”
对了,问一下“non”是啥意思呢,不用两个点了吗



“non” 是暂时取消捕捉,xline 命令选v之后就一点就行,选h水平的一样

grantto19 发表于 2020-1-13 10:20:41

start4444 发表于 2020-1-13 10:00
“non” 是暂时取消捕捉,xline 命令选v之后就一点就行,选h水平的一样

明白,谢谢啦

grantto19 发表于 2020-1-13 10:24:57

cq4920 发表于 2020-1-13 10:05
根据你的小插件该的小程序!还挺好用的!

(defun c:tt4(/ pt1 pt2 n )


好,谢谢啦,我看大家用polar比笛卡尔坐标系用的多,是不是极坐标在绘图时更简洁还是其他的支持命令多呢

cq4920 发表于 2020-1-13 10:51:23

grantto19 发表于 2020-1-13 10:24
好,谢谢啦,我看大家用polar比笛卡尔坐标系用的多,是不是极坐标在绘图时更简洁还是其他的支持命令多呢

不懂,我刚会一丢丢的基础!

grantto19 发表于 2020-1-13 11:21:13

cq4920 发表于 2020-1-13 10:51
不懂,我刚会一丢丢的基础!

嗯,我也是刚学,咱加油吧,好像论坛浏览量都小了,那个qq群也加不进去,有问题咱多讨论多学习吧,我微信就是grantto19 qq是1073740488 小富,欢迎互加

grantto19 发表于 2020-1-13 11:26:02

start4444 发表于 2020-1-13 10:00
“non” 是暂时取消捕捉,xline 命令选v之后就一点就行,选h水平的一样

兄弟,有机会咱也互加一下吧
页: [1] 2
查看完整版本: 求助: 尺寸线等分辅助线 不能重复