AutoLISP 노트 - 공통 코드 단편

2680 단어 AutoLISPAutoCAD
1. 문자열은 지정한 구분자에 따라 구분한다
;;;  :           
;;;(split "1,,255280.791,3743764.732,2786.206" ",")
;;;  :("1" "" "255280.791" "3743764.732" "2786.206")
(defun split (str delim / LST POS)
  (while (setq pos (vl-string-search delim str))
    (setq lst (append lst (list (substr str 1 pos))))
    (setq str (substr str (+ 2 pos)))
  )
  (if (> (strlen str) 0)
    (append lst (list str))
    lst
  )
)

2. 문자열은 지정한 구분자에 따라 구분한다. 구분자는 문자열로 파일 이름을 얻는 데 사용되고 확장자를 구분자로 사용할 수 있다.
;;;(splitX "C:\\Users\\....25~K1+013.52;EL.2776.73~EL.2804.74).dat" ".dat")
;;;  :(C:\\Users\\....25~K1+013.52;EL.2776.73~EL.2804.74))
(defun splitX (str delim / LST POS)
  (while (setq pos (vl-string-search delim str))
    (setq lst (append lst (list (substr str 1 pos))))
    (setq str (substr str (+ (+ pos (strlen delim)) 1)))
  )
  (if (> (strlen str) 0)
    (append lst (list str))
    lst
  )
)

3. 수령 날짜
;;;  :    ,   splitx     ,  “20170511”      
(defun date ()
  (setq datetime (rtos (getvar "cdate") 2 6))
  (car (splitx datetime "."))
)

4、일간 얻기
;;;  :      ,   splitx     ,  “110253”        
(defun time ()
  (setq datetime (rtos (getvar "cdate") 2 6))
  (cadr (splitx datetime "."))
)

5. 텍스트 문자열에 점을 지정하여 쓰기
;  :         
;  :(_text (getpoint "Pick") "3333" 2 0)
(defun _text (point string height rotation / space text)
  (setq	acdoc (vla-get-activedocument (vlax-get-acad-object))
		space (vlax-get-property
		acdoc
				(if (= 1 (getvar 'CVPORT))
				  'Paperspace
				  'Modelspace
				)
		      )
  )
  (setq text (vla-addtext space string (vlax-3D-point point) height))
  (vla-put-alignment text acalignmentmiddlecenter)
  (vla-put-textalignmentpoint text (vlax-3D-point point))
  (vla-put-rotation text rotation)
  text
)

6. 시스템 관련 소프트웨어로 파일 열기
;  :
;(setq fl (getfiled "        " (cond ( *file* ) ( "" )) "txt;csv;xls" 1))
;...
;(_Open (findfile fl))
  (defun _Open ( target / Shell result )
    (if (setq Shell (vla-getInterfaceObject (vlax-get-acad-object) "Shell.Application"))
      (progn
        (setq result
          (and (or (eq 'INT (type target)) (setq target (findfile target)))
            (not
              (vl-catch-all-error-p
                (vl-catch-all-apply 'vlax-invoke (list Shell 'Open target))
              )
            )
          )
        )
        (vlax-release-object Shell)
      )
    )
    result
  )

좋은 웹페이지 즐겨찾기