其实你只要有天正软件5.0就知道了,其中的LISP程序是开源的,里面就有关于这方面的函数。

- ;;---------------------------
- ;;键入文本框定义函数
- (defun Do_EnterData (/ str s listtmp tf)
- (setq str (get_tile "EnterData")
- tf nil
- listtmp
- (mapcar
- '(lambda (s)
- (if (/= "" s)
- (if (and (not (= (substr str 1 1) "*"))
- (not (= (substr str 1 1) "."))
- ) ;_ 结束and
- (cond
- ((and (= (Substrnumber s "*") 1)
- (or (= (type (read (car (StrParse s "*")))) 'INT)
- (= (type (read (car (StrParse s "*")))) 'REAL)
- ) ;_ 结束or
- (= (type (read (cadr (StrParse s "*")))) 'INT)
- ) ;_ 结束and
- s
- )
- ((and (= (Substrnumber s "*") 0)
- (or (= (type (read s)) 'INT)
- (= (type (read s)) 'REAL)
- ) ;_ 结束or
- ) ;_ 结束and
- (strcat s "*1")
- )
- (t (setq tf T) s)
- ) ;_ 结束cond
- ) ;_ 结束if
- ) ;_ 结束if
- ) ;_ 结束lambda
- (StrParse str " ")
- ) ;_ 结束mapcar
- ) ;_ 结束setq
- (if tf
- (progn
- (mode_tile "EnterData" 2)
- (set_tile "error" "数据错误!--本编辑框只能是数字!!!")
- ) ;_ 结束progn
- (progn (set_tile "error" "")
- (setq Common_List (append listtmp '("")))
- (Dcl_up)
- ) ;_ 结束progn
- ) ;_ 结束if
- ) ;_ 结束defun
- ;;-------------------------
- ;;保存列表函数
- (defun save_list ()
- (cond ((= show_type 0) (setq UpKJ_list Common_List))
- ((= show_type 1) (setq LowKJ_list Common_List))
- ((= show_type 2) (setq LeftJS_list Common_List))
- ((= show_type 3) (setq RightJS_list Common_List))
- ) ;_ 结束cond
- ) ;_ 结束defun
- ;;-----------------
- ;;字符串表转换至数字表函数
- (DEFUN Do_resolve (l / l1 n i x s)
- (FOREACH x (REVERSE l)
- ;;; (IF (/=
- (SETQ s (ATOF x))
- ;;; 0.0)
- ;;; (progn
- (IF (SETQ N (VL-STRING-POSITION (ASCII "*") x))
- (SETQ I (ATOI (SUBSTR x (+ 2 n))))
- (SETQ I 1)
- ) ;_ 结束if
- (REPEAT i (SETQ l1 (CONS S l1)))
- ;;; )
- ;;; ) ;_ 结束if
- ) ;_ 结束foreach
- l1
- ) ;_ 结束defun
- ;;-------------------------
你肯定没有仔细读程序!
只是我将天正的个数在前面改为个数在后面了
如 2500*3 理解为 2500间距的尺寸有3个
你要想作这方面的编程,最好仔细读读我从天正里修改来的轴线绘制程序,最好是用CAD中的Vlisp下中断来跟踪。 |