钾肥 发表于 2004-5-16 16:25:00

按照你上面说的方法在CAD2004中试了一下!不行!


命令: vbaload 正在初始化 VBA 系统...<BR>命令: (defun c:GB () (command "-vbarun" "GBChamfer.dvb!thisdrawing.GBChamfer")) <BR>C:GB


命令: gb -vbarun<BR>宏名称(M): GBChamfer.dvb!thisdrawing.GBChamfer<BR>未找到宏。<BR>命令: nil

subtlation 发表于 2004-5-17 16:52:00

我试过了应该没有问题啊,我把我的文件上传,11楼的再下载一次试试。


       

wolaikk 发表于 2004-5-30 18:03:00

加载工程启用宏,再运行宏就可以用了,输入GB不行

subtlation 发表于 2004-6-1 08:11:00

可能这个dvb文件要放到cad的支持目录下才行。

ljcgq 发表于 2004-6-6 09:12:00

我实在是不会用bva所以用lsp写了一个希望大家一起完善。


;========================<BR>;两垂直线倒内直角<BR>;2004.6.5               ljc<BR>;========================<BR>(defun c:dj( / l ll p1)<BR>        (setq cm(getvar "cmdecho")       os(getvar "osmode")) <BR>        (setvar "cmdecho" 0)<BR>        (setq l(car (nentsel       "请选择直线1"))       h1(getdist "线1切割值:")<BR>                                                               ll(car (nentsel       "请选择直线2"))       h2(getdist "线2切割值:")                       )<BR>        (setq p1 (inters               (cdr (assoc 10 (entget l)))               (cdr (assoc 11 (entget l)))<BR>                                                                                                                                                                                                                               (cdr (assoc 10 (entget ll)))       (cdr (assoc 11 (entget ll)))                       nil))<BR>        (command "_chamfer" "d" h1 h2) (command)<BR>        (command "_chamfer" l ll)<BR>        (setq line(entlast))<BR>        (setvar "osmode" 0) <BR>        (command "rectang" (cdr (assoc 10 (entget line))) <BR>                                                                                                                                                                                                                                                                               (cdr (assoc 11 (entget line)))               )<BR>        (command "trim" line "" p1 "") <BR>        (setvar "osmode" os)<BR>        (command "erase" line "")<BR>        (command "explode" (entlast) )<BR>        (setvar "cmdecho" cm) (print)<BR>        )

alan_cmh 发表于 2004-6-20 16:23:00

能不能完善一下,设置一下默认切割值,像AutoCAD的倒角一样,不设置h1,h2即为1.5,只需选择两条线即可完成命令,而不是要操作4次,同样设置以后即可保存为下次的h1,h2默认值,谢谢!

ljcgq 发表于 2004-6-20 21:28:00

(defun c:dj( / l ll p1)<BR>        (setq cm(getvar "cmdecho")       os(getvar "osmode")) <BR>        (setvar "cmdecho" 0)<BR>        (setq l(car (nentsel       "请选择直线1"))       h1(getdist "线1切割值:")        <BR>                                                               ll(car (nentsel       "请选择直线2"))       h2(getdist "线2切割值:")               )


                                                               (if h1 setq h1 1.5)(if h2 setq h2 1.5)<BR>        (setq p1 (inters               (cdr (assoc 10 (entget l)))               (cdr (assoc 11 (entget l)))<BR>                                                                                                                                                                                                                               (cdr (assoc 10 (entget ll)))       (cdr (assoc 11 (entget ll)))                       nil))<BR>        (command "_chamfer" "d" h1 h2) (command)<BR>        (command "_chamfer" l ll)<BR>        (setq line(entlast))<BR>        (setvar "osmode" 0) <BR>        (command "rectang" (cdr (assoc 10 (entget line))) <BR>                                                                                                                                                                                                                                                                               (cdr (assoc 11 (entget line)))               )<BR>        (command "trim" line "" p1 "") <BR>        (setvar "osmode" os)<BR>        (command "erase" line "")<BR>        (command "explode" (entlast) )<BR>        (setvar "cmdecho" cm) (print)<BR>        )

ZZXXQQ 发表于 2004-6-23 08:53:00

试一下下面的LISP程序


(DEFUN C:CORNER (/ GETLINE VLINE1 VLINE2 DL1 DL2 PT1 PT2 PT3 PT4 PT5 PT6 PT7 ANG1 ANG2)


(DEFUN GETLINE (MSG / A1)<BR>        (INITGET 1)<BR>        (SETQ A1 (CAR (ENTSEL MSG)))<BR>        (WHILE (/= (CDR (ASSOC 0 (ENTGET A1))) "LINE")<BR>       (PRINC "\n您选的不是线图元,请再选一次...")<BR>       (INITGET 1)<BR>       (SETQ A1 (CAR (ENTSEL MSG)))<BR>        )<BR>        A1<BR>)


        (SETQ VLINE1 (GETLINE "\n请选取第一条线: "))<BR>        (WHILE (OR (= VLINE2 nil) (EQUAL VLINE1 VLINE2))<BR>       (IF (EQUAL VLINE1 VLINE2) (PRINC "\n线重复,请再选一次..."))<BR>       (SETQ VLINE2 (GETLINE "\n请选取第二条线: "))<BR>        )<BR>        (SETQ D (GETDIST "\n倒角距离 &lt;1.5&gt; : ")<BR>                                               D (IF (= D nil) 1.5 D))<BR>        (SETQ DL1 (ENTGET VLINE1)                                       DL2 (ENTGET VLINE2)<BR>                                               PT1 (CDR (ASSOC 10 DL1)) PT2 (CDR (ASSOC 11 DL1))<BR>                                               PT3 (CDR (ASSOC 10 DL2)) PT4 (CDR (ASSOC 11 DL2))<BR>                                               PT5 (INTERS PT1 PT2 PT3 PT4 nil))<BR>        (IF (/= PT5 nil) (PROGN<BR>       (SETQ PT2 (IF (&lt; (DISTANCE PT5 PT1) (DISTANCE PT5 PT2)) PT2 PT1)<BR>                                                       PT4 (IF (&lt; (DISTANCE PT5 PT3) (DISTANCE PT5 PT4)) PT4 PT3)<BR>                                                       ANG1 (ANGLE PT5 PT2)                       ANG2 (ANGLE PT5 PT4)<BR>                                                       PT1 (POLAR PT5 ANG1 D)       PT3 (POLAR PT5 ANG2 D)<BR>                                                       PT5 (POLAR PT3 ANG1 D))<BR>       (ENTDEL VLINE1) (ENTDEL VLINE2)<BR>       (COMMAND "LINE" PT2 PT1 PT5 PT3 PT4 "")<BR>        )<BR>       (T (PRINC "\n两直线无交点!"))<BR>        )<BR>        (PRINC)<BR>)<BR>(PRINC "\nType CORNER to start.")<BR>(PRINC)

alan_cmh 发表于 2004-6-23 08:57:00

谢谢ljcgq,送鲜花一朵!

alan_cmh 发表于 2004-6-23 09:06:00

ljcgq发表于2004-6-20 21:28:00static/image/common/back.gif(defun c:dj( / l ll p1)        (setq cm(getvar \"cmdecho\")       os(getvar \"osmode\"))         (setvar \"cmdecho\" 0)        (setq l(car (nentsel       ...


(if h1 setq h1 1.5)(if h2 setq h2 1.5)


<BR>上面那行好像有点问题,是不是


(if null h1(setq h1 1.5)) (if null h2(setq h2 1.5))

<BR>
页: 1 [2] 3
查看完整版本: [求助]一個特殊的倒角程序