iDwgTools Programs (for AutoCAD)

arx119.egloos.com

포토로그 방명록 업그레이드/기능 요청



[두번째] Autodesk App Store에 응용프로그램 등록 방법 Autodesk App Store

안녕하세요. 

지난 시간에 이어서 이번에는 AutoCAD .NET 응용프로그램의 명령어와 패키지 XML을 구성하는 방법에 대해서 소개해 드리겠습니다. 우선 지난 시간에는 AutoCAD 버전별 .NET 프로젝트를 구성하였습니다. 이 상태에서 AutoCAD의 .NET 명령으로 로딩하면 아무런 반응이 없습니다. (당연히 로딩만 되죠..). AutoCAD에서 .NET응용프로그램을 로딩하고 명령을 호출했을때 사용자의 코드를 실행할 수 있도록 다음과 같은 주요 절차를 진행해야 합니다. 

가) .NET 응용프로그램의 시작 포인트 코드를 등록합니다.
AutoCAD는 다양한 사용자의 응용프로그램에서 어떤것이 응용프로그램 시작 클래스인지를 모릅니다. 따라서 AutoCAD .NET API에서는 AutoCAD가 런타임시에 알 수 있도록 Attribute 클래스를 제공하고 있습니다.

- [assembly : ExtensionApplication(type)] : AutoCAD에게 응용프로그램 시작 클래스가 무엇인지를 알려주게 됩니다.
응용프로그램의 시작 클래스 등록은 필수 사항은 아닙니다. 하지만 .NET 응용프로그램에서 최초 실행시 메뉴 구성 또는 AutoCAD의 이벤트를 처리하는 등의 기능이 필요하다면 클래스를 작성해야 합니다.

< 응용프로그램 시작 클래스 등록 예제 코드>

나. .NET 응용프로그램 명령어를 등록합니다.

- [assembly: CommandClass(type)] : AutoCAD에게 .NET 응용프로그램의 명령어 클래스임을 알려줍니다.

- [CommandMethod("group name","local name",flag)] : AutoCAD에게 사용자 명령어 및 함수를 알려줍니다.
   어트리뷰트 밑의 함수는 명령어가 실행시 호출되는 함수가 됩니다.

                                             < 응용프로그램 시작 클래스 등록 예제 코드>

위의 두 가지 사항이 완료되었다면, 기본적인 모듈이 구성되었다고 볼수 있습니다. 세부적인 코드는 추후 github에 공유해 놓겠습니다. 

다. 패키지 XML 및 파일들을 구성합니다.

패키지 XML은 Autodesk사가 AutoCAD 및 자사의 응용프로그램에서 addin 프로그램을 로딩할 수 있도록 제공하는 파일 입니다.
XML의 이름은 PackageContents.xml 이며 관련 정보는 이곳을 참고해 주세요.

1. 작업 폴더 구성하기 
패키지 XML과  실행 파일을 나중에 Autodesk App Store에 등록해야 하므로 관리할 목적으로 폴더를 구성합니다. 저는 .NET응용프로그램 프로젝트와는 별개로 InstallProject 폴더 밑에 "AutoAlign_bundle" 이름의 폴더를 생성하였습니다.

폴더구성은 다음과 같습니다.













2. 실행 파일 복사하기

Contents 폴더 밑에 Windows폴더에 "BIMsoft.Utilities.AutoAlign.2015.dll" , "BIMsoft.Utilities.AutoAlign.2018.dll", "BIMsoft.Utilities.AutoAlign.2019.dll" 파일을 복사합니다. 만약 Mac용 AutoCAD Addin프로그램이라면 Windows 대신 Mac 폴더에 복사해서 구분해야 겠죠.

3. 아이콘 만들기

Autodesk App Store에 엡을 게시하려면 대표 아이콘을 작성해야 합니다. 작성법은 Autodesk사에서 가이드를 제공하고 있으므로 이것을 참고하시면 됩니다
Autodesk사에서 제공하는 아이콘 샘플 파일 다운로드 : Icons_Publishers.zip

아이콘 파일을 제작한 후 "Contents\Resources" 폴더에 복사합니다.

4. 도움말 파일 만들기

AutoCAD .NET 응용프로그램의 도움말을 HTML로 작성해서 "Contents" 폴더 밑에 복사합니다. 
(추후에 App Store에 파일을 등록하면 이 부분은 자동으로 구성되는것 같습니다. 굳이 만들지 않아도 될 것 같습니다)

Express AutoAlign v1.0.2 Program

What is Express AutoAlign?
This utility automatically align the locations of selected entities.

1. Supported versions of AutoCAD
AutoCAD 2015 ~ 2019 (Win32/x64)

2. Execution Commands : AutoAlign

3. Command option

- Left : Aligns the selected entities to the left.

- Center : Aligns the selected entities centered.

- Right : Aligns the selected entities to the right.

- Top : Aligns the selected entities to the top.

- Middle : Align the selected entities in the middle

- Bottom : Align the selected entities in the bottom

- equalV : Aligns the selected entities with the same spacing on the Y-axis.

- equalH : Aligns the selected entities with the same spacing on the X-axis.




5. PackageContents.xml 파일 작성하기

PackageContents.xml 파일을 "BIMsoft ExpressAutoAlign.bundle" 폴더 아래에 생성해 줍니다. 생성한 파일을 메모장 등의 텍스트 문서 편집기로 열기 합니다. 앞서 생성한 파일들을 이곳에서 연결하게 됩니다. 관련된 XML 스키마 설명은 Autodesk사에 자세히 설명되어 있으므로 이곳을 참고해 주시기 바라겠습니다.

- XML 버전 및 문자코드 
<?xml version="1.0" encoding="utf-8"?>

- ApplicationPackage 스키마 입력
<ApplicationPackage
    SchemaVersion="1.0" AutodeskProduct="AutoCAD" AppVersion="1.0.2"
    Author="BIMsoft"
    ProductCode="{651CADEA-87EA-4FC8-87A3-07909FF1E8E4}" UpgradeCode="{84390A33-FD8D-439B-9932-AE60DD98E75B}"
    Name="Express AutoAlign" Icon="./Contents/Resources/AutoAlign.png"
    AppNameSpace="appstore.exchange.autodesk.com"
    Helpfile="./Contents/Help.html"
    Description="It automatically aligns the positions of the selected entities"
    FriendlyVersion="1.0.2"
    ProductType="Application"
    SupportedLocales="Eng"
    OnlineDocumentation="http://arx119.egloos.com/10876566">

- AutoCAD 2015 Compoment 스키마 작성 

    <!-- AutoCAD 2015 -->
<Components Description="AutoCAD 2015 32bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win32"
            Platform="AutoCAD*"
            SeriesMin="R20.0"
            SeriesMax="R20.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign" Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2015.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>
<Components Description="AutoCAD 2015 64bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win64"
            Platform="AutoCAD*"
            SeriesMin="R20.0"
            SeriesMax="R20.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2015.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>   

- AutoCAD 2016 이후 버전 Compoment 스키마 작성한 전체 내용

    <!-- AutoCAD 2016 -->
<Components Description="AutoCAD 2016 32bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win32"
            Platform="AutoCAD*"
            SeriesMin="R21.0"
            SeriesMax="R21.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2018.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>
<Components Description="AutoCAD 2016 64bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win64"
            Platform="AutoCAD*"
            SeriesMin="R21.0"
            SeriesMax="R21.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2018.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>   
    <!-- AutoCAD 2017 -->
<Components Description="AutoCAD 2017 32bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win32"
            Platform="AutoCAD*"
            SeriesMin="R21.0"
            SeriesMax="R21.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2018.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>
<Components Description="AutoCAD 2017 64bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win64"
            Platform="AutoCAD*"
            SeriesMin="R21.0"
            SeriesMax="R21.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2018.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>   
    <!-- AutoCAD 2018 -->
<Components Description="AutoCAD 2018 32bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win32"
            Platform="AutoCAD*"
            SeriesMin="R22.0"
            SeriesMax="R22.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2018.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>
<Components Description="AutoCAD 2018 64bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win64"
            Platform="AutoCAD*"
            SeriesMin="R22.0"
            SeriesMax="R22.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2018.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>   
    <!-- AutoCAD 2019 -->
<Components Description="AutoCAD 2019 32bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win32"
            Platform="AutoCAD*"
            SeriesMin="R23.0"
            SeriesMax="R23.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2019.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>
<Components Description="AutoCAD 2019 64bit">
        <RuntimeRequirements SupportPath="./Contents/Resources"
            OS="Win64"
            Platform="AutoCAD*"
            SeriesMin="R23.0"
            SeriesMax="R23.0" />
        <ComponentEntry AppType=".Net"
            AppName="Express AutoAlign"
            Version="1.0.2"
            ModuleName="./Contents/Windows/BIMsoft.Utilities.AutoAlign.2019.dll"
            AppDescription="It automatically aligns the positions of the selected entities"
            LoadOnCommandInvocation="True">
        <Commands GroupName="IDWGTOOLS_PLUGINS">
            <Command Local="AUTOALIGN" Global="AUTOALIGN" />
        </Commands> 
        </ComponentEntry>
    </Components>

여기서 주의할 사항입니다. 

1. 아이콘 및 실행파일의 경로는 XML이 위치한 폴더에서 상대 경로로 작성합니다.
2. AutoCAD의 버전별  SeriesMin , SeriesMax 를 맞춰 줍니다. 
3. 지원하는 언어는 스키마에 해당 언어 속성을 변경합니다.
4. 아이콘 작성시 Autodesk 사에서 제공하는 가이드를 준수해야 합니다.
   (이것을 따르지 않게되면 요청메일을 받게됩니다.)

라. 패키지 XML 실행 테스트

패키지 XML을 구성하였다면 AutoCAD별 로딩 테스트를 해 볼 수 있습니다.

1. 위의 폴더에서 "BIMsoft ExpressAutoAlign.bundle" 폴더를 복사합니다.
2. 탐색기 주소창에 %programdata% 를 입력하고 엔터를 실행하여 위치를 확인합니다.
3. 이곳에 "BIMsoft ExpressAutoAlign.bundle" 폴더를 붙여넣기 합니다.
4. AutoCAD 2015~2019 를 실행하고 명령어 창에 "AutoAlign"을 입력시 .NET 응용프로그램이 실행되는지 확인합니다.


라항까지 문제가 없다면 Autodesk App Store에 엡을 올릴수 있는 상태가 됩니다. 다음시간에는 App Store에 계정을 생성하는 방법과 App을 등록하는 방법에 대해서 진행하도록 하겠습니다.

날씨가 아주 많이 덥습니다. 시원한 휴일 보내시길 바라겠습니다.

^^;;;



덧글

  • 아저씨 2018/08/02 15:09 # 삭제 답글

    굉장히 좋은 글입니다.
    국내 첫 소개 글 아닐까 싶네요. ^^
    한증막 날씨에 건강 조심하세요~
  • arx119 2018/08/06 08:53 #

    아저씨님 댓글 감사합니다.
    많이들 관심이 없는 듯 하네요. ㅎㅎ 그저 기억에서 사라지기전에 기록차원으로 남기는데 의미를 가져야 할 것 같습니다. 무더운 하루 시원하게 보내세요~~~
댓글 입력 영역



구글번역

통계 위젯 (화이트)

15687
523
548354

국가접속Flag

free counters

iDwgTools 후원하기