实用的LSP源代码,值得参考
liminnet
liminnet Lv.5
2007年08月09日 10:21:24
只看楼主

(defun c:cd (/) (setvar "cmdecho" 1) (setq a1 (getpoint "第一点")) (princ "") (setq a2 (getpoint "第二点")) (princ "") (setq ang (* (/ (angle a1 a2) pi) 180)) (setq dist (rtos (/ (distance a1 a2) 1000) 2 1))

(defun c:cd (/)
(setvar "cmdecho" 1)
(setq a1 (getpoint "第一点"))
(princ "
")
(setq a2 (getpoint "第二点"))
(princ "
")
(setq ang (* (/ (angle a1 a2) pi) 180))
(setq dist (rtos (/ (distance a1 a2) 1000) 2 1))
(setq dist1 (strcat "L=" dist "m"))
(setq a3 (getpoint "文字插入点"))
(command "text" a3 "350" ang dist1)
)


我想在这段代码里点功能就是提示我;管径Dn=多少,i=多少,然后用人工输入数据,出
来的效果是这样子:管径Dn=300 L=9.8m i=0.008,大哥大姐帮帮忙啊
免费打赏
liminnet
2007年08月14日 17:41:22
22楼
还是不行啊,我用纯CAD几个版打开输入JJ都不行呀,你帮我为ctr命令也好呀
回复
liminnet
2007年08月14日 17:43:24
23楼
我不知道问题出来那了,不过我知道应该不是命令冲突的问题,因为我是纯CAD打开的,真的不知道问题出在那了,急啊....................
回复
liminnet
2007年08月14日 17:45:43
24楼
大哥,再帮我看看呀,我真的不知道问题出在那了,纯CAD下没用JJ这个命令的,急啊..........................
回复
sailorcwx
2007年08月14日 18:01:49
25楼
还有(entmake (list
’(0 . "CIRCLE")
’(100 . "AcDbEntity")
’(100 . "AcDbCircle")
符号全是半角的,论坛转换成全角的了
回复
sailorcwx
2007年08月14日 18:02:44
26楼
(setq YH_jj_ptlist ’()
YH_jj_a0 0
YH_jj_times 36
)
也有这个问题
回复
sailorcwx
2007年08月14日 18:10:20
27楼
打包上传
回复
sailorcwx
2007年08月14日 18:12:42
28楼
由于论坛自动将半角的符号转成了全角的,导致加载失败,所以没有定义到jj这个命令,你检查一下程序,把全角的符号改成半角的再加载试试
回复
liminnet
2007年08月14日 19:47:07
29楼
大哥,可以了,不过还有个问题在里面,就是当管线不是实线时,也就是说但管线是虚线或是点划线之类的线型时(因为管线要用到不同的线型表示),就会乱啦,如下图所示,有点只剪了一边,有点把另一边的直线都剪不见了,大哥,再麻烦你一下,帮我修改一下,再打个包给我啦,拜托了,浪大哥
回复
liminnet
2007年08月14日 19:52:30
30楼
浪大哥,我又多试了几次用实线来操作,也有上面的情况出现莫名其妙的把别一边的整条线都剪掉了,有点在圆内只剪了一边,如下图啦
回复
sailorcwx
2007年08月14日 23:28:00
31楼
试试
(defun c:jj()
(if (not YH_jj_jr) (setq YH_jj_jr 350))
(initget "R")
(while (setq YH_jj_pt (getpoint "\n点取井中心或右键退出[设置半径(R)]:"))
(if (= YH_jj_pt "R")
(progn
(setq YH_jj_jr1 (getreal (strcat "\n输入新半径<" (rtos YH_jj_jr) ">:")))
(if (and YH_jj_jr1 (> YH_jj_jr1 0))(setq YH_jj_jr YH_jj_jr1))
)
(progn
(setq YH_oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(setq YH_jj_ptlist ’()
YH_jj_a0 0
YH_jj_times 36
)
(repeat YH_jj_times
(setq YH_jj_a0 (+ YH_jj_a0 (/ (* pi 2) YH_jj_times)))
(setq YH_jj_ptlist (cons (polar YH_jj_pt YH_jj_a0 YH_jj_jr) YH_jj_ptlist))
)
(setq YH_jj_ent (ssget "cp" YH_jj_ptlist))
(if YH_jj_ent
(progn
(entmake (list
’(0 . "CIRCLE")
’(100 . "AcDbEntity")
’(100 . "AcDbCircle")
(cons 10 YH_jj_pt)
(cons 40 YH_jj_jr)
)
)
(command "trim" (entlast) "")
(setq YH_jj_index 0)
(repeat YH_jj_times (sslength YH_jj_ent)
(command (list (ssname YH_jj_ent YH_jj_index) YH_jj_pt))
(setq YH_jj_index (1+ YH_jj_index))
)
)
)
(setvar "osmode" YH_oldsnap)
)
)
(initget "R")
)
(princ)
)
回复

相关推荐

APP内打开