Dynamo
Primer for v2.0
한국어
한국어
  • 정보
  • 소개
    • Dynamo의 정의 및 작동 방식
    • Primer 사용자 안내서, Dynamo Community 및 플랫폼
  • Dynamo 설정
  • 사용자 인터페이스
    • 작업공간
    • 라이브러리
  • 노드 및 와이어
  • 필수 노드 및 개념
    • 노드의 색인
    • 계산 방식 설계를 위한 형상
      • 형상 개요
      • 벡터, 평면 및 좌표계
      • 점
      • 곡선
      • 표면
      • 솔리드
      • 메쉬
    • 프로그램의 빌딩 블록
      • 데이터
      • 수학
      • 논리
      • 문자열
      • 색상
    • 리스트로 설계
      • 리스트란 무엇입니까?
      • 리스트 작업
      • 리스트의 리스트
      • n차원 리스트
    • Dynamo의 사전
      • 사전이란
      • 사전 노드
      • 코드 블록의 사전
      • Revit 사용 사례
  • 사용자 노드 및 패키지
    • 사용자 노드
      • 사용자 노드 소개
      • 사용자 노드 작성
      • 라이브러리에 게시
    • 패키지
      • 패키지 소개
      • 패키지 성공 사례 - Mesh Toolkit
      • 패키지 개발
      • 패키지 게시하기
      • Zero-Touch 가져오기
  • Revit용 Dynamo
    • Revit 연결
    • 선택
    • 편집
    • 작성
    • 사용자화
    • 문서화
  • Dynamo for Civil 3D
    • Civil 3D 연결
    • 시작하기
    • 노드 라이브러리
    • 샘플 워크플로우
      • 도로
        • 등주 배치
      • 토지
        • 서비스 배치
      • 유틸리티
        • 구조물 이름 바꾸기
      • 레일
        • 클리어런스 엔벨로프
      • 측량
        • 점 그룹 관리
    • 고급 항목
      • 객체 바인딩
      • Python 및 Civil 3D
    • Dynamo 플레이어
    • 유용한 패키지
    • 리소스
  • Forma 베타의 Dynamo
    • Forma에서 Dynamo Player 설정
    • Dynamo Player에서 그래프 추가 및 공유
    • Dynamo Player에서 그래프 실행
    • Dynamo 컴퓨팅 서비스와 Desktop Dynamo의 차이점
  • Dynamo의 코딩
    • 코드 블록과 DesignScript
      • Code Block이란
      • DesignScript 구문
      • 축약형
      • 함수
    • DesignScript를 사용한 형상
      • DesignScript 형상 기본 사항
      • 기하학적 원형
      • 벡터 수학
      • 곡선: 보간 및 제어점
      • 전환, 회전 및 기타 변환
      • 표면: 보간, 제어점, 로프트, 회전
      • 기하학적 매개변수화
      • 교차 및 자르기
      • 기하학적 부울
      • Python 점 생성기
    • Python
      • Python 노드
      • Python 및 Revit
      • 자체 Python 템플릿 설정
    • 언어 변경 사항
  • 모범 사례
    • 그래프 전략
    • 스크립팅 전략
    • 스크립팅 참조
    • 프로그램 관리
    • Dynamo에서 대규모 데이터 세트로 효율적으로 작업
  • 샘플 워크플로우
    • 시작하기 워크플로우
      • 파라메트릭 꽃병
      • 어트랙터 점
    • 개념 색인
  • 개발자 입문서
    • 소스에서 Dynamo 빌드하기
      • 소스에서 DynamoRevit 빌드하기
      • Dynamo의 종속성 관리 및 업데이트
    • Dynamo를 위한 개발
      • 시작하기
      • Zero-Touch 사례 연구 - 그리드 노드
      • Zero-Touch 노드에서 Python 스크립트 실행하기(C#)
      • Zero-Touch로 한 단계 더 나아가기
      • 고급 Dynamo 노드 사용자 정의
      • Dynamo 패키지에서 COM(interop) 유형 사용
      • NodeModel 사례 연구 - 사용자 지정 UI
      • Dynamo 2.x용 패키지 및 Dynamo 라이브러리 업데이트하기
      • Dynamo 3.x용 패키지 및 Dynamo 라이브러리 업데이트하기
      • 확장
      • Dynamo 2.0+에 대한 사용자 패키지 구성 정의
      • Dynamo 명령행 인터페이스
      • Dynamo 통합
      • Dynamo For Revit을 위한 개발
      • 패키지 게시하기
      • Visual Studio에서 패키지 빌드하기
      • 패키지로 제공되는 확장
    • 끌어오기 요청
    • 테스트 기대치
    • 예제
  • 부록
    • 질문과 대답(FAQ)
    • 시각적 프로그래밍 및 Dynamo
    • 리소스
    • 릴리즈 정보
    • 유용한 패키지
    • 예제 파일
    • 호스트 통합 맵
    • PDF 다운로드
    • Dynamo 키보드 바로 가기
Powered by GitBook
On this page
  • 사용자 지정 직사각형 그리드 노드
  • 사용자 지정 노드 수정
Edit on GitHub
Export as PDF
  1. 개발자 입문서
  2. Dynamo를 위한 개발

Zero-Touch 사례 연구 - 그리드 노드

Previous시작하기NextZero-Touch 노드에서 Python 스크립트 실행하기(C#)

Last updated 2 months ago

Visual Studio 프로젝트를 실행한 상태에서 직사각형의 셀 그리드를 만드는 사용자 지정 노드를 빌드하는 방법을 살펴봅니다. 여러 표준 노드를 사용하여 이 노드를 생성할 수 있지만, 이 노드는 Zero-Touch 노드에 쉽게 포함할 수 있는 유용한 도구입니다. 그리드 선과 달리 셀은 중심점을 기준으로 크기를 조정하거나, 모서리 정점을 조회하거나, 면에 내장될 수 있습니다.

이 예에서는 Zero-Touch 노드를 생성할 때 주의해야 할 몇 가지 기능 및 개념에 대해 다룹니다. 사용자 지정 노드를 빌드하여 Dynamo에 추가한 후에는 ‘Zero-Touch로 한 단계 더 나아가기’ 페이지를 검토하여 기본 입력 값, 여러 값 반환, 문서, 객체, Dynamo 형상 유형 사용 및 마이그레이션에 대해 자세히 살펴보십시오.

사용자 지정 직사각형 그리드 노드

그리드 노드 빌드를 시작하려면 새 Visual Studio 클래스 라이브러리 프로젝트를 생성합니다. 프로젝트를 설정하는 방법에 대한 자세한 설명은 시작하기 페이지를 참조하십시오.

  1. 프로젝트 유형으로 Class Library를 선택합니다.

  2. 프로젝트의 이름을 CustomNodes로 지정합니다.

형상을 작성하고 있으므로 적절한 NuGet 패키지를 참조해야 합니다. NuGet 패키지 관리자에서 ZeroTouchLibrary 패키지를 설치합니다. 이 패키지는 using Autodesk.DesignScript.Geometry; 문에 필요합니다.

  1. ZeroTouchLibrary 패키지를 찾아봅니다.

  2. Dynamo Studio의 현재 빌드인 1.3에서 이 노드를 사용할 것입니다. 이 버전과 일치하는 패키지 버전을 선택합니다.

  3. 클래스 파일의 이름도 Grids.cs로 변경했습니다.

다음으로, RectangularGrid 메서드가 위치할 네임스페이스 및 클래스를 설정해야 합니다. Dynamo에서 노드의 이름은 메서드 및 클래스 이름에 따라 지정됩니다. 아직 Visual Studio로 복사하지 않아도 됩니다.

using Autodesk.DesignScript.Geometry;
using System.Collections.Generic;

namespace CustomNodes
{
    public class Grids
    {
        public static List<Rectangle> RectangularGrid(int xCount, int yCount)
        {
        //The method for creating a rectangular grid will live in here
        }
    }
}

Autodesk.DesignScript.Geometry;는 ZeroTouchLibrary 패키지의 ProtoGeometry.dll을 참조하며 System.Collections.Generic은 리스트를 작성하는 데 필요합니다.

이제 직사각형을 그리는 메서드를 추가할 수 있습니다. 클래스 파일은 다음과 같아야 하며 Visual Studio로 복사할 수 있습니다.

using Autodesk.DesignScript.Geometry;
using System.Collections.Generic;

namespace CustomNodes
{
    public class Grids
    {
        public static List<Rectangle> RectangularGrid(int xCount, int yCount)
        {
            double x = 0;
            double y = 0;

            var pList = new List<Rectangle>();

            for (int i = 0; i < xCount; i++)
            {
                y++;
                x = 0;
                for (int j = 0; j < yCount; j++)
                {
                    x++;
                    Point pt = Point.ByCoordinates(x, y);
                    Vector vec = Vector.ZAxis();
                    Plane bP = Plane.ByOriginNormal(pt, vec);
                    Rectangle rect = Rectangle.ByWidthLength(bP, 1, 1);
                    pList.Add(rect);
                }
            }
            return pList;
        }
    }
}

프로젝트가 이와 비슷하면 .dll을 빌드해 봅니다.

  1. 빌드 > 솔루션 빌드를 선택합니다.

프로젝트의 bin 폴더에 .dll이 있는지 확인합니다. 빌드가 성공하면 Dynamo에 .dll을 추가할 수 있습니다.

  1. Dynamo 라이브러리의 사용자 지정 RectangularGrids 노드

  2. 캔버스의 사용자 지정 노드

  3. Dynamo에 .dll을 추가하기 위한 추가 버튼

사용자 지정 노드 수정

위의 예에서는 RectangularGrids 메서드 외에 다른 것을 정의하지 않은 매우 간단한 노드를 만들었습니다. 그러나 입력 포트에 대한 툴팁을 작성하거나 표준 Dynamo 노드처럼 노드에 요약을 제공할 수 있습니다. 이러한 기능을 사용자 지정 노드에 추가하면 특히 사용자가 라이브러리에서 기능을 검색하려는 경우 더 쉽게 사용할 수 있습니다.

  1. 기본 입력 값

  2. xCount 입력에 대한 툴팁

RectangularGrid 노드에는 다음과 같은 기본 기능이 필요합니다. 아래 코드에서 입력 및 출력 포트 설명, 요약 및 기본 입력 값을 추가했습니다.

using Autodesk.DesignScript.Geometry;
using System.Collections.Generic;

namespace CustomNodes
{
    public class Grids
    {
        /// <summary>
        /// This method creates a rectangular grid from an X and Y count.
        /// </summary>
        /// <param name="xCount">Number of grid cells in the X direction</param>
        /// <param name="yCount">Number of grid cells in the Y direction</param>
        /// <returns>A list of rectangles</returns>
        /// <search>grid, rectangle</search>
        public static List<Rectangle> RectangularGrid(int xCount = 10, int yCount = 10)
        {
            double x = 0;
            double y = 0;

            var pList = new List<Rectangle>();

            for (int i = 0; i < xCount; i++)
            {
                y++;
                x = 0;
                for (int j = 0; j < yCount; j++)
                {
                    x++;
                    Point pt = Point.ByCoordinates(x, y);
                    Vector vec = Vector.ZAxis();
                    Plane bP = Plane.ByOriginNormal(pt, vec);
                    Rectangle rect = Rectangle.ByWidthLength(bP, 1, 1);
                    pList.Add(rect);
                    Point cPt = rect.Center();
                }
            }
            return pList;
        }
    }
}
  • RectangularGrid(int xCount = 10, int yCount = 10)와 같이 메서드 매개변수에 값을 할당하여 입력 기본값을 지정합니다.

  • 앞에 ///가 오는 XML 문서로 입력 및 출력 툴팁, 검색 키워드 및 요약을 작성합니다.

툴팁을 추가하려면 프로젝트 디렉토리에 xml 파일이 있어야 합니다. 이 옵션을 사용하면 Visual Studio에서 .xml을 자동으로 생성할 수 있습니다.

  1. 여기에서 XML 문서 파일을 사용하도록 설정하고 파일 경로를 지정합니다. 그러면 XML 파일이 생성됩니다.

모두 끝났습니다. 여러 표준 기능을 사용하여 새 노드를 만들었습니다. 다음 장에서는 Zero-Touch 노드 개발 및 알아야 할 이슈에 대해 자세히 설명합니다.

직사각형 그리드 그래프
Visual Studio에서 새 프로젝트 생성하기
Visual Studio에서 새 프로젝트 구성하기
ZeroTouchLibrary 패키지
DLL 빌드하기
Dynamo의 사용자 지정 노드
입력 툴팁
XML 문서를 사용하도록 설정하기