实用的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,大哥大姐帮帮忙啊
免费打赏
sailorcwx
2007年08月14日 23:31:48
32楼
打包
回复
liminnet
2007年08月15日 09:00:49
33楼
太谢谢你了浪大哥,这么晚了你还在帮我,你真是高手中的高手啊, 这么热情帮我,真是滴水之恩当涌泉报啊,浪大哥,我有个贴子在论坛好久没回答了,你可以帮一下我吗,就是怎么样很快的去掉块中的定义属性,变成一个没有属性的块,在位编辑也不行,炸开也不想,用块编辑更不想,我想的是用一个命令就可以去掉它,不知道浪大哥,可以帮我这个忙吗?
回复
sailorcwx
2007年08月15日 12:38:43
34楼
用battman,把需要修改的属性改成不可见
回复
liminnet
2007年08月15日 12:52:11
35楼
但它还是有属性的块啊,只是不可见而已,我的意思是对于有属性的块可以除去定义属性,变成普通的块,没有属性的块,以前听人家说,编个程序就可去很快的去掉了,不知道可不可以这样子,浪大哥
回复
xshrimp
2007年08月15日 23:33:39
36楼
;;清理〖圆〗内部线
(defun c:cj ( / p q l m n b center0 radius0 lll pt3 oldosmode)
(prompt "\n清理〖圆〗内部线,一窗口搞定,:)")
(COMMAND "UNDO" "be")
(setq oldosmode (getvar "osmode"))
(setvar "osmode" 0)
(SETQ p (ssget ’((0 . "CIRCLE"))))
(setq l 0
m 0
n (sslength p)
)
(while (< l n)
(setq q (ssname p l))
(setq b (cdr (assoc 0 (entget q))))
(if (or (= "ARC" b) (= "CIRCLE" b))
(progn
(setq center0 (cdr (assoc 10 (entget q)))
radius0 (cdr (assoc 40 (entget q)))
LLL 0.0
)
(command "_.trim" q "" "f")
(WHILE (< LLL 6.5)
(SETQ PT3 (POLAR center0 lll (* radius0 0.9)))
(command pt3)
(SETQ LLL (+ 0.2 LLL))
)
(command "" "")
)
)
(setq l (+ 1 l))
)
(setvar "osmode" oldosmode)
(COMMAND "UNDO" "e")
(princ)
)
回复
xshrimp
2007年08月15日 23:35:16
37楼
;;块属性文字显示隐藏
(defun c:hi(/ show_hide toggle_id block_sset n bss_len aq
vla_att2fix
)
(command "_.undo" "group")
(initget "s h")
(setq show_hide (getkword "\n显示(S)或者隐藏(H)图块属性文字?<H>: "))
(if (= show_hide "s")
(setq show_hide 1
toggle_id "显示"
block_sset (ssget ; "x"
(list (cons 0 "insert") (cons 66 1)
(cons 410 (getvar "ctab"))
)
)
)
(setq show_hide 0
toggle_id "隐藏"
block_sset (ssget ; "x"
(list (cons 0 "insert") (cons 66 1)
(cons 410 (getvar "ctab"))
)
)
)
)
(setq n 0
aq 0
bss_len (sslength block_sset)
)
(repeat bss_len
(setq vla-att2fix (ssname block_sset n))
(while (and
(setq vla-att2fix (entnext vla-att2fix))
(= "attrib" (cdr (assoc 0 (entget vla-att2fix))))
)
(setq aq (1+ aq))
(vlax-put-property (vlax-ename->vla-object vla-att2fix) ’visible
show_hide
)
)
(setq vla-att2fix (vlax-ename->vla-object (ssname block_sset n)))
(mapcar
’(lambda (nn)
(setq aq (1+ aq))
(vlax-put-property nn ’visible show_hide)
)
(vlax-safearray->list
(vlax-variant-value
(vla-getattributes
vla-att2fix
)
)
)
)
(setq n (1+ n))
)
(prompt (strcat toggle_id " " (rtos aq 2 0) " 个属性文字在 " (rtos bss_len 2 0 )
" 个块中..."
)
)
(command "_.undo" "end")
(princ)
)
回复
sailorcwx
2007年08月16日 00:25:06
38楼
这个功能挺无聊的,不知道用在哪方面的?去处属性变成普通块,那属性赋值怎么处理,直接删除了?
回复
sailorcwx
2007年08月16日 00:40:12
39楼


原理和我17楼的一样,都存在29楼提的bug。当f拉过的虚线与直线没有实交点的时候会出现剪切失败。
回复
liminnet
2007年08月16日 08:41:52
40楼
浪大哥,和CAD大哥,很感谢你们的热情帮助,不过我要的是通过lisp可以去块中定义属性,并不是隐藏起来,因为我要把没有属性的图块转化成某个软件的图块,但它一检测到有属性的存在,就转化不了,如下图了,所以我才想要有这种功能,没有属性的块其实就是在里面没有用att定义属性,只有其它图形对象在里面,可以帮帮我吗?各位大哥
回复
gpszx1981
2007年08月16日 18:17:10
41楼

直接炸开然后把属性删除了在保存块
对LISP不时很精通
回复

相关推荐

APP内打开