>  기사  >  컴퓨터 튜토리얼  >  CAD용 Lisp 프로그램 작성 방법을 스스로 배우십시오.

CAD용 Lisp 프로그램 작성 방법을 스스로 배우십시오.

王林
王林앞으로
2024-01-08 14:02:121213검색

CAD에서 Lisp를 직접 프로그래밍하는 방법

숨기기와 표시라는 두 가지 명령을 만들었습니다.

간단히 작성했지만 모든 기능이 다 들어있지는 않습니다. 그냥 해보고 사용해 보세요

다음 코드를 복사하여 acad.lsp를 생성합니다. CAD 설치 디렉터리의 첫 번째 레이어 폴더에 넣으면 자동으로 로드됩니다.

; 명령줄에 hidesel 명령을 입력한 다음 그래픽 요소를 선택하면 선택되지 않은 요소가 숨겨진 레이어

로 변경됩니다.

(defun C:hidsel(/ all; 모든 기본 요소

xs; 숨겨진 기본 요소

yc;프리미티브 숨기기

남닷)

(setvar "CMDECHO" 0) 명령 에코 끄기

(명령 "_layer" "n" "레이어 임시 숨기기"""")(명령 "_layer" "off" "레이어 임시 숨기기" """)

(setvar "CMDECHO" 1)

(setq all (ssget "x")) 모두 선택

(setq xs (ssget)); 숨겨지지 않은 기본 요소 선택

(setq n -1 yc all) 숨겨진 프리미티브를 작동합니다

(반복(s길이 xs)

(setq n (+ n 1))

(setq nam (ssname xs n)) N번째 프리미티브의 이름을 반환합니다

(setq yc (ssdel nam yc))

)

(setq N -1);hide

(반복(sslength yc)

(setq N (+ n 1))

(setq nam (ssname yc n)) N번째 프리미티브의 이름을 반환합니다

(setq dat (entget nam));DAT는 N번째 요소 데이터를 저장합니다

(entmod (subst (cons 8 "일시적으로 숨겨진 레이어") (Assoc 8 dat) dat)) yc 컬렉션 숨기기

)

(setq all nil xs nil yc nil n nil nam nil dat nil) 점유된 데이터 지우기

(프린스)

)

;모든 프리미티브 표시

(defun c:shoal(/all n nam dat)

(setq all (ssget "x")) 모두 선택

(setq N -1);hide

(반복(전체 길이)

(setq N (+ n 1))

(setq nam (ssname all n)) N번째 프리미티브의 이름을 반환합니다

(setq dat (entget nam));DAT는 N번째 요소 데이터를 저장합니다

(entmod (subst (cons 8 "0") (Assoc 8 dat) dat)) yc 컬렉션 숨기기

)

(setvar "CMDECHO" 0)

(COMMAND "PURGE" "LA" "레이어 임시 숨기기" "Y" "Y" "")

(setvar "CMDECHO" 1)

(setq all nil n nil nam nil dat nil) 점유된 메모리 데이터 지우기

(프린스)

)

CAD에서 Lisp의 기능은 무엇인가요? 어떻게 사용하는지 자세히 알면 가산점을 받을 수 있나요? Lisp 자체는 CAD에 속하는 개발 프로그램으로 몇 가지 간단한 기능 계산을 제공하고 나머지는 모두 오토캐드의 그리기 기능을 위한 것입니다. Lisp 프로그램은 데이터베이스의 저장 프로시저와 유사하며 일괄적으로 CAD 그래픽을 처리하고 그릴 수 있습니다.

Lisp를 배우는 것은 매우 간단합니다. 몇 가지 주요 명령의 사용법만 익히면 됩니다. 또한 Lisp 자체에는 꽤 많은 기능이 있으므로 외울 필요가 없습니다.

LISP 로드

1. APPLOAD 명령을 사용한 다음 로드하려는 LISP 파일을 찾아 로드할 수 있습니다.

2 파일 관리자에서 ACAD의 그래픽 창으로 LISP 파일을 드래그하거나 로드할 수 있습니다

3. 명령줄을 사용한 후 ("c:\temp\xxx.lsp" 로드) 경로 이름을 실제 경로로 입력하세요.

또 다른: LSP 프로그램의 경우(defun 뒤에 오는 것은 명령 또는 함수입니다. 일반적으로 프로그램에는 프롬프트가 있어야 합니다. 그렇지 않은 경우 식별자 c: 뒤에 오는 단어는 ACAD에서 사용할 수 있는 명령이며 입력할 수 있습니다. COMMAND: 바로 뒤에 실행할 수 있습니다.

여러 CAD에서 LISP 언어로 프로그래밍하는 방법

AutoLISP 언어는 일반 LISP 언어를 기반으로 하며 CAD 응용 프로그램에 적합한 많은 기능으로 확장된 프로그래밍 언어입니다. 느리고 비밀을 유지하기 어려운 해석적 가치 언어입니다. 모든 텍스트 편집 소프트웨어로 편집할 수 있으며 일반 텍스트 형식으로 저장할 수 있습니다. 예:

(setq i 1); 즉, 코드 i의 값은 1

입니다.

(명령 "CIRCLE" '(0 0) 100); 명령은 좌표 원점에 반경 100의 원을 그립니다.

AutoLISP 언어의 모든 구성 요소는 함수 형식으로 제공되며 명령문 개념이나 기타 문법 구조가 없습니다. AutoLISP 프로그램을 실행한다는 것은 일부 기능을 실행한 다음 다른 기능을 호출하는 것입니다. 예:

(setq pt1 (getpoint"n가운데 삽입점을 선택해주세요"))

(명령 "CIRCLE" pt1 100); 반경이 100인 원을 그리도록 이 삽입점을 명령합니다

AutoLISP는 데이터와 프로그램을 통일된 테이블 구조로 표현하므로 프로그램을 데이터로 처리할 수 있고, 데이터도 프로그램으로 실행할 수 있습니다.

예: 직선, 시작점 좌표'(0 0), 끝점 좌표'(1000 0), 레이어 0, 색상 1 [빨간색] 이것은 직선의 일부 데이터이며 이를 실행하고 변환하는 방법입니다. 프로그램 코드는 다음과 같습니다:

(entmake (list '(0 . "LINE") '(8 . "0") '(62 . 1) '(10 0 0) '(11 1000 0)))

데이터를 시각적으로 볼 수도 있고, AutoCAD의 명령줄에 붙여넣어 위에서 원하는 직선을 그릴 수도 있습니다.

AutoLISP 언어에서 프로그램 실행 과정은 함수 값을 처리하는 과정이며, 함수 값을 처리하는 과정에서 함수의 기능이 구현됩니다. AutoCAD에서는 모든 객체가 무수한 점으로 구성되어 있다고 볼 수 있으며, 각 점은 고유한 좌표를 가지고 있으며 이러한 점의 값을 계산하고 얻은 값을 기반으로 판단을 내리는 것입니다.

AutoLISP 언어의 주요 제어 구조는 재귀적입니다. 재귀를 사용하면 프로그래밍이 간단하고 이해하기 쉬워집니다. 예:

(setq &k1 (entsel)) 개체 선택

(setq &k1 (car &k1)); 그래픽 요소 추출

(setq #g1 (entget &k1)) 속성 목록 가져오기

(setq c0 (cdr (assoc 0 #g1))) 기본 이름 가져오기

위 내용을 하나씩 적어보면 다음과 같습니다.

(setq c0 (cdr (assoc 0 (entget (car (entsel)))))) 간단하고 이해하기 쉽습니다

autolisp는 간단하고 쉽기 때문에 빠르게 시작할 수 있습니다. 프로그램을 작성한 후에는 그리기 효율성이 크게 향상될 수 있습니다. 유명한 [Tianzheng] 플러그인은 그리기에 좋은 도우미입니다.

autolisp 프로그램에도 좌표 추출 등의 단점이 있는데, 이 경우에는 일반 좌표 1과 -1의 좌표 값이 동일하지만, 그래픽의 위치가 달라서 좌표 계산이 어려우므로 좌표 값을 추출하려면 VLAX 함수를 사용하는 것이 가장 좋습니다.

위 내용은 CAD용 Lisp 프로그램 작성 방법을 스스로 배우십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 docexcel.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제