|
发表于 2003-9-9 18:36:00
|
显示全部楼层
能不能作个调用该DCL的程序。
怎么将VLISP程序里的变量传递呢。
(defun test()
(setq id (load_dialog "gxj"))后面我想将后面程序的变量A B 传给编辑框的VALUE
)
**********************************
(vl-load-com)
;(vl-acad-defun 'gx)
(defun c:gx (/ a ent1 ent2 ent_tt)
(setq b (ssget "x"))
(command "_.explode" b "")
(setq b (ssget "x"))
(command "_.pedit" b "" "j" "" "")
(setq a (ssget "x"))
(command "_.region" a "")
(prompt "\n选择实体")
(setq a (ssget "x"))
(setq ent1 (ssname a 0))
(setq ent2 (ssname a 1))
;(setq ent1 (car(entsel "\n选择从中减去的实体或选择外腔")))
;(setq ent2 (car(entsel "\n选择减去的实体或者选择内腔")))
(while(or (not ent1)(not ent2))
(prompt"\n 请重新选择实体计算差集")
(setq ent1 (car(entsel "\n选择从中减去的实体或选择外腔")))
(setq ent2 (car(entsel "\n选择减去的实体或选择内腔")))
)
(if (vla-object ent1)) (vla-get-area (vlax-ename->vla-object ent2)))
(progn
(setq ent_tt ent1)
(setq ent1 ent2)
(setq ent2 ent_tt)
)
)
(command "subtract" ent1 "" ent2 "")
(setq ent1 (entlast))
(princ "\n")
;(command "massprop" ent1 "")
(setq ent2 (vla-get-momentofinertia (vlax-ename->vla-object ent1)))
; (setq lst (vl-list* ent2))
(setq lst (vlax-safearray->list (vlax-variant-value ent2)))
(setq a (rtos(car lst)1))
(setq b (rtos (cadr lst )1))
(princ (strcat "惯性矩: x值:" a "\n"))
(princ (strcat " y值:" b "\n"))
;(princ (strcat "惯性矩: x值:" a)"\n");(rtos (car lst)1) "\n"))
;(princ (strcat " y值:" b)"\n");(rtos (cadr lst)1) "\n"))
;(princ)
;exec sql begion declare section
;insert into sh1
; select * from sh1
; where x='x1'
;values(1, a,b)
; exec sql end declare section
;(xx)
;((lambda(/ id)
; (setq id(LOAD_DIALOG "D:/Program Files/AutoCAD
;2004/$vld$.dcl"))
; (cond(>= id 0)
;(if(NEW_DIALOG "gxj" id )
;(done_dialog)
;(START_DIALOG)))
;(UNLOAD_DIALOG)
) |
|