马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
实现同一个功能创建一个LINE
 - (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object)))
- pt1(vlax-3d-point '(0.0 0.0 0.0))
- pt2(vlax-3d-point '(10.0 20.0 0.0))
- )
- (defun c#-ln ()
- (vl-cmdf "apple_line")
- )
- (defun vla-ln()
- (vla-addline ms pt1 pt2)
- )
- (defun comd-ln ()
- (vl-cmdf ".line" '(0.0 0.0 0.0) '(10.0 20.0 0.0) "")
- )
- (defun entmk-ln()
- (entmake '((0 . "line")(10 0.0 0.0 0.0)(11 10.0 20.0 0.0)))
- )
- ;;;用以前论坛上朋友发的测试函数
- (defun c:tt ()
- (setvar "cmdecho" 0)
- (setq re_times 10000)
- (setq funlist (list c#-ln vla-ln comd-ln entmk-ln))
- (foreach fun funlist
- (progn
- (setq t1 (getvar "date")) ;_记录开始时间t1
- (repeat re_times
- (fun)
- ) ;_repeat
- (setq t2 (getvar "date")) ;_记录结束时间t2
- (princ "函数:")(princ fun)(princ "测试结果")
- (princ (menucmd (strcat "M=$(edtime," (rtos (- t2 t1) 2 16) ",HH:MM:SS:MSEC)")))
- (princ "\n")
- ) ;_progn
- ) ;_foreach
- (setvar "cmdecho" 1)
- (princ)
- )
c#测试DLL已经上传,见附件,用NETLOAD加载后直接用(vl-cmdf "apple_line")
上面函数测试结果
:#<USUBR @0cad1294 C#-LN>测试结果00:00:07:019
函数:#<USUBR @0cad12bc VLA-LN>测试结果00:00:01:045
函数:#<USUBR @0cad12e4 COMD-LN>测试结果00:00:07:332
函数:#<USUBR @0cad130c ENTMK-LN>测试结果00:00:00:342
可见ENTMAK方法速度最快
VLA次之
C# 和 CAD命令差别不大
现在把VL-CMDF换成COMMAND得到下面结果
函数:#<USUBR @0af09a14 C#-LN>测试结果00:00:07:315
函数:#<USUBR @0c767230 VLA-LN>测试结果00:00:01:045
函数:#<USUBR @0c76617c COMD-LN>测试结果00:00:18:751
函数:#<USUBR @0c766bb8 ENTMK-LN>测试结果00:00:00:357
对C#影响不大,但是对CAD命令效率影响很大,上面测试有助于LISP编程中提高效率
另外我们再做另外一个测试,上面的C#运用了浮点运算,现在我们将C#中的浮点改成整数,同样也分别将VLA/COMMAND等改成整数
 - (setq ms (vla-get-ModelSpace (vla-get-ActiveDocument(vlax-get-Acad-Object)))
- pt1(vlax-3d-point '(0 0 0))
- pt2(vlax-3d-point '(10 20 0))
- )
- (defun c#-ln ()
- (command "apple_line")
- )
- (defun vla-ln()
- (vla-addline ms pt1 pt2)
- )
- (defun comd-ln ()
- (command ".line" '(0 0 0) '(10 20 0) "")
- )
- (defun entmk-ln()
- (entmake '((0 . "line")(10 0 0 0)(11 10 20 0)))
- )
测试结果
函数:#<USUBR @0cb61258 C#-LN>测试结果00:00:05:677
函数:#<USUBR @0cb61280 VLA-LN>测试结果00:00:01:013
函数:#<USUBR @0cb612a8 COMD-LN>测试结果00:00:16:739
函数:#<USUBR @0cb612d0 ENTMK-LN>测试结果00:00:00:359
|