![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ZWZCH/btsDqMCTOWL/6GMUDwk9V5kd1z9O9hgeiK/img.png)
지난글에서 포스트 수정을 위한 프로그램과 기본적인 내용에 대해 이야기 했습니다. VSCode Extension에 대한 내용과 변수 관련 내용은 지난글 참조 바랍니다. G-Code 행 번호 처리 행 번호[N] 사용 유무와 옵션에 대해 G-Code에 행번호 N001,, 와 같은 행 번호에 대한 컨트롤 내용은 대부분 GPP파일의 초반부 변수할당 이후에 있습니다. blknum_gen = false blknum_f = '5.0(p)' blknum_letter = 'N' blknum_exist = true blknum = 1 blknum_delta = 1 blknum_max = 3200000 위 코드가 줄 번호와 관련된 코드입니다. 사용하시는 GPP파일에서 없는 코드가 있을수 있습니다. blknum_gen = fa..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/oyaFz/btsCODVbrlV/ZqlL1BtzVMMe67B1WkBSK0/img.png)
본 글은 SolidCam Post Processor의 수정에 대한 기본 개념에 대한 내용을 담고 있습니다. 총 2번에 나눠 내용을 정리할 예정이며, 첫번째는 포스트 수정을 위한 준비단계이고 두번째는 기본 문법에 대한내용을 담을 예정입니다. 출처 : https://www.youtube.com/@SolidCAMProfessor SolidCAMProfessor www.youtube.com 만약 유지 보수 중이라면 리셀러 업체에 문의 하시길 바라며 포스트의 임의 수정은 장비와 작업자의 부상을 일으킬수 있으므로 반드시 주의가 필요한 작업임을 명심하시기 바랍니다. 수정전 포스트는 백업 하시기 바라며 수정 후 코드를 반드시 확인 하시기 바랍니다. 시작에 앞서 왜 저희가 선택한 캠이 SolidCam인지 프로그램 부흥을..
Entity 개수 확인 (sslength ) 의 존재하는 객체의 개수를 표시 1. (sslength) 사용자로 하여금 어떤 객체를 선택하게 한 후 그 객체의 갯수를 알고자 할 때 사용하는 함수. 2. 예제 (defun c:test1(/ ent n) (setq ent (ssget)) ; 객체 선택 요구 (setq n (sslength ent)); 선택 객체 개수 (prompt "Entity numbers #"); "Entity numbers #" 화면에 출력 (princ n); 선택 갯수를 화면에 출력 (princ) ) 이 함수는 (repeat) (while) 문 등과 함께 객체의 수만큼 반복할 때 많이 사용될 함수이다. 객체의 속성 변경 글자의 크기, 글자의 폭, 글자의 스타일, 라인의 시작(끝)위치, ..
변수의 수명 관리 이번에는 리습 생성 시 사용되는 변수를 임시로 만들 것인지 영구 변수로 사용할 것인지에 대해 알아보자. 1. 변수저장에 대해서 알아보자. 캐드 명령 창에서 아래와 같이 입력해 보자. (setq a 1) 이렇게 입력하게 되면 a=1 값을 가지고 기억하고 있다. a값이 얼마인지 알아보려면 캐드 텍스트 창에서 !a 라고 쳐보자. 그러면 '1' 이라는 답이 텍스트 창에 보일 것이다. 몇 가지 더해보자. (setq b "TEST STRING") !b; b값을 보여줘라. (setq c (ssget)); 캐드 화면에서 성분을 선택한다. !c; c값을 보여준다. 2. 리습에서의 변수 기억 (defun c:test1(/ e f g) (setq e 1 f 2 g 3) ) 위의 test 1 뒤의 (/ e ..
repeat 반복문 똑같은 명령을 반복하고자 할 때 사용한다. 1. (repeat)의 설명 (repeat ) 위의 '정수'부분은 꼭 1,2,3,4... 같은 정수만 써야 한다. 1.0, 2.0, 3.0과 같이 소수점이 붙은 정수 같은 숫자들도 안된다. 지금은 소숫점을 숫자로 써놓아서 당연히 이해하겠지만 정수 자리에 변수가 들어가면 변수가 꼭 정수형인지 확인해야 한다. 2. 바로 예제로 들어가 보자 아래의 예제는 n 값을 초기값인 1로 설정하고 10번을 반복하면서 1씩 더해간다. 결괏값인 'n'은 '11'이 된다. (defun c:test1() (setq n 1) ; 초기값 n ← 1 로 설정한다. (repeat 10 ; 10번을 반복한다. (setq n (+ 1 n)); n ← n+1 ); End of ..
사용자에게 입력값 받기 숫자, 문자등을 명령창에서 변수로 가져와 코드를 작성할때 사용하게 됩니다. 가장 많이 사용하는 3가지 함수입니다. (getint) -> 정수 (getreal) -> 실수 (getstring) -> 문자 1. getint - 숫자중 정수만을 입력받고 싶을때 사용됩니다. (정수를 간단히 설명하면 0이 포함된 소숫점이 없는 숫자라 생각하시면 됩니다) (예 : 0, 1, 44, -24123, ,,, ) 예로 알아 봅시다 (setq test1 (getint)) 이렇게 하면 test1 이라는 변수에 사용자가 입력한 값을 넣어 줍니다. (setq test1 (getint "값을 입력하시오 : ")) 이렇게 하면 화면에 "값을 입력하시오 : " 라는 메세지가 화면에 표시 됩니다. 화면에 메세지를..
변수의 정의 (a) 다른 언어를 좀 하신 분이라면 쉽게 이해하시겠지만 초보자를 위해서 좀 자세히 설명하겠습니다. 1. 변수란 무엇인가? 변수란 변하는 수, 계속 변하는 값이며 그 값을 저장하는 공간을 '변수'라 부릅니다. 예로 3.141592라는 긴 숫자를 매번 쓰기보단 3.141592라는 숫자를 pi로 정의해 놓으면 그다음부터는 pi라고만 써도 3.141592라고 인식한다는 겁니다. 이것을 리습으로 형식으로 작성하면 (setq pi 3.141592) 이렇게 됩니다. 2. setq 란 무엇인가? 변수를 정의할 때 사용하는 명령어입니다. 리습은 항상 괄호를 열고 닫는 걸 기억하셔야 합니다. 3. (setq a b) b의 값을 a에 할당하라는 명령입니다, 즉 정의한단 말이죠 아래를 계속 읽어보면 조금 더 쉬..
LISP은 CAD LT 버전에선 이용할 수 없습니다. 단축키 만들기 캐드의 Acad.pgp 파일은 사용자로 하여금 단축키를 정의할 수 있는 파일입니다. 하지만 LISP 파일의 명령이 우선순위가 높아 단축키 정의가 쉽게 되지 않는 분은 리습의 단축키를 확인해 보시기 바랍니다. 1. Line 명령의 단축키 아래의 글을 Notepad.exe 나 기타 텍스트 에디터로 하나 만들어서 아무 이름이나 저장하고 (예:test1.lsp) 캐드에서 load 하십시오. (defun c:Li() (command "LINE")) lsp 파일 로드방법 1. appload 후 해당 파일 선택. 2. 탐색기 창에서 파일을 드래그 후 캐드 창에 놓기. 위 리습은 "line"을 "Li"라는 단축키로 바꾸어 놓은 것입니다. c: 다음의 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cKYxPU/btrgC7cz7oC/lilU1bs7HhzFT9n46Ra391/img.png)
SOLIDWORKS API(Application Programming Interface)는 프로그래밍 방식으로 SOLIDWORKS 기본 명령을 호출하기 위해 타사 소프트웨어에서 사용할 공용 기능을 사용하는 라이브러리 세트입니다. 소프트웨어 개발자는 SOLIDWORKS와의 사용자 상호 작용을 에뮬레이션하여 자동화 루틴을 구현하거나 응용 프로그램에 새 명령을 추가하여 SOLIDWORKS 기능을 보완할 수 있습니다. SOLIDWORKS API는 사소한 예외를 제외하고 SOLIDWORKS의 거의 모든 기능을 다룹니다(이 경우 API 구현은 일반적으로 향후 릴리스에서 계획됨). 따라서 사용자가 인터페이스에서 SOLIDWORKS로 할 수 있는 모든 작업을 코드에서 에뮬레이션할 수 있다고 말할 수 있습니다. 애플리케..
제가 만들어 사용중인 템플릿입니다. SolidEdge C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; // Import using SolidEdgeFramework; using SolidEdgeFrameworkSupport; using SolidEdgeCommunity; using SolidEdgeConstants; // Documents using SolidEdgeAssembly; using SolidEdgePart; using SolidEdgeDraft; // etc usin..
SolidEdge API 작업중 알수없는 오류에 대하여...엣지 API중 SDK 문서나 샘플코드에 자주 등장하는 코드중 오류만 뿜어내고 필요 없어 보이는 코드가 있습니다. 가장 쉽게 접하는것 중 하나가 OleMessageFilter.Register() 그리고 요즘은 SolidEdgeUtils.Connect(true) 이런것도 자주 보게 됩니다.없어도 크게 문제될것 없을것 같은 코드고 실제 다른방식으로 연결해도 문제 없이 연결 됩니다. 하지만 사실 엣지 API가 오류가 많습니다.프로그램도 자잘한 버그가 자주 발생되는데 API라고 버그가 없진 않겠지요,,하지만 엣지 API는 수정이 어려운건지 대응이 너무 느립니다. Vxx 버전부터 있던 버그가 ST10 버전에도 여전히 해결되지 않습니다. ST8에서 문제를 인..
Solid Edge 좌표계 자동 작성 매크로 입니다.Excel 이용해 좌표계 생성 하는 매크로입니다. 코드 소스Option Explicit 'Excel -> Edge Sub Make_Coordnate() On Error Resume Next Dim EDGE As SolidEdgeFramework.Application Dim EDoc As SolidEdgePart.PartDocument Dim OldStBar As String Set EDGE = GetObject(, "SolidEdge.Application") If EDGE Is Nothing Then Err.Clear Set EDGE = CreateObject("SolidEdge.Application") Set EDoc = EDGE.Documents.A..
선택한 블럭을 영역내에서 삭제하는 소스입니다. Sub DeleteBlock() AppActivate ThisDrawing.Application.Caption On Error Resume Next Dim Doc As AcadDocument Set Doc = ThisDrawing Doc.Utility.Prompt vbCr & "블럭 제거프로그램..." Dim SelObjO As AcadObject Dim P1 As Variant Doc.Utility.GetEntity SelObjO, P1, "영역내 찾을 블럭을 선택하세요..." If SelObjO.ObjectName "AcDbBlockReference" Then Doc.Utility.Prompt vbCr & "블럭이 아닙니다..." Exit Sub End ..
블럭 선택과 필터에 대하여...본 코드는 BricsCAD에서 사용중인 코드입니다. AutoCAD와 다를수 있으니 참고바랍니다.코드 전체글: [CAD/VBA] - 자동출력 VBA 이 글은 코드 전체 중 블록 설정에 대한 부분만 있습니다.코드 중 수정이 필요하다고 판단되는 부분은 블록이름입니다.블럭 이름 '출력 폼 블럭의 이름 Dim BName(2) As String BName(0) = "A$C7E9A3D3E" BName(1) = "A$C220D1AB8" BName(2) = "Form A4" Dim BNC As Integer BNC = UBound(BName) + 2 ReDim FilterType(BNC) As Integer ReDim FilterData(BNC) As Variant FilterType(0)..
프린터 설정에 대하여...본 코드는 BricsCAD에서 사용중인 코드입니다. AutoCAD와 다를수 있으니 참고바랍니다.코드 전체글: [CAD/VBA] - 자동출력 VBA 이 글은 코드 전체 중 프린터 설정에 대한 부분만 있습니다.프린터 설정중 수정이 필요하다고 판단되는 부분은 프린터 이름, 플롯 스타일 이름입니다.프린터 Dim Layout As AcadLayout Set Layout = Doc.ActiveLayout With Layout .ConfigName = PrntName .StandardScale = acScaleToFit .StyleSheet = "acad.ctb" .PlotWithPlotStyles = True .PlotType = acWindow .PlotRotation = ac90degr..
도면 정렬에 대하여...본 코드는 BricsCAD에서 사용중인 코드입니다. AutoCAD와 다를수 있으니 참고바랍니다.코드 전체글: [CAD/VBA] - 자동출력 VBA 이 글은 코드 전체 중 출력 순서에 대한 부분만 있습니다.회사마다 도면을 정렬하는 방식이 달라 4가지 방식으로 구분 하였으니 그 중 자신의 회사와 맞는 방식을 확인하여 코드를 수정하시기 바랍니다. 출력 순서Enum 문(열거형변수)으로 정의. Enum PrtSquence TD TU DD DU End Enum 1. TD : 한줄 출력후 아래로 내려오며 반복. 정렬기준점은 좌측하단.2. TU : 한줄 출력후 아래로 내려오며 반복. 정렬기준점은 좌측상단.3. DD : 한줄 출력후 위로 올라가며 반복. 정렬기준점은 좌측하단.4. DU : 한줄 출..
한 파일내 다중도면 출력.. 본 코드는 BricsCAD에서 사용중인 코드입니다. AutoCAD와 다를수 있으니 참고바랍니다. 한 프로젝트 혹은 하나의 장비 도면을 관리할때 한개의 캐드 파일에서 관리하는곳이 많습니다.리비전 이력이나 부품의 조립관계 확인등,, 한 파일에서 관리하는게 가장 이상적이지만 가장 큰 걸림돌은 도면 출력이라 생각 됩니다. 여러 캐드 서드파티 프로그램들이 그 문제를 해결하기위해 다양한 방법으로 도면을 관리하고 있습니다.저 또한 캐드에서 가장 먼저 만들고 자주 쓰는 프로그램이 출력 프로그램입니다. 그래서 제가 사용하는 프로그램 소스를 공개하며, 이 글을 보시는 분도 자신에게 맞게 수정, 사용하셔서 출력에 보내는 시간이 줄었으면 합니다. '출력 순서 정의 Enum PrtSquence TD..
Solid Edge VBA를 시작하며... 시작에 앞서 Solid Edge는 VBA 프로그램이 포함되어 있지 않습니다. VBA를 시작하기 위해선 연결작업을 먼저 해야합니다.Edge VBA 연결방법:Excel등 다른 프로그램의 VBA에서 연결 - 가장 간단한 방법입니다. Visual Basic 6.0 설치 - 무료가 아니니 패스 하겠습니다.Visual Studio 설치 - 추후 강좌는 Visual Studio에서 진행하도록 하겠습니다. Edge VB 시작 강좌는 Solid Edge 토튜리얼중 Bering 파일로 하겠습니다.파일경로는 Edge 설치위치의 \Custom\Bearing을 보시기 바랍니다.Excel 화면입니다. 이 예제는 Update Solid Edge 버튼을 클릭하면 현재 셀 위치의 치수를 Ed..
파일 이름에서 속성 추출하는 프로그램... 본 파일의 소스는 어느정도 강좌가 진행된 후 소개하도록 하겠습니다.파일이름에서 문서번호와 타이틀을 추출해 작성하는 매크로입니다.실행은 어셈블리 환경에만 되며, 엣지 특성상 대형 어셈블리는 비활성화 되는 경우가 많습니다. 파일에 접근해서 내용을 작성하는 부분이기 때문에 시작 전 전체파일을 활성화 시킨후 작업합니다. 그림에서 설명 드리겠습니다. 어셈블리에서 실행 완료한 후 파일 상태입니다. 첫번째 파일을 예로 들어 설명 드리겠습니다."012345 테스트바디 180202.par"란 파일로 봤을때 "제목:" 을 테스트바디 로 작성 "문서번호:" 를 012345 로 작성 이 2가지를 파일이름에서 추출해 작성하는 매크로입니다.활용은 도면 파트리스트에서 사용 하면 됩니다. ..