GhPythhon 구성 요소 간에 Python 객체 교환

개시하다


GhPython에서 구성 요소를 만들 때도 하나의 구성 요소에서 프로그램을 완성할 수 있지만 입력이 너무 많아 관리가 어렵거나 플러그인화할 때 유니버설성이 사라집니다.
그러나 여러 개의 구성 요소로 나뉘어 GhPythhon 구성 요소 사이에서 데이터를 교환하기 위해 목록과 트리로 변환될 때마다 그 결과는 여분의 처리를 증가시켜 코드를 이해하기 어려워진다.
이번에는 GhPythhon 구성 요소 사이에서 Python Pythhon의dixation을 교환하는 방법을 해결책으로 소개한다.

교환 데이터


예를 들어, 나는 숫자, 점, 선의 목록을 디렉터리로 만들어 데이터를 보내고 싶다.
이런 과자입니다.
import Rhino.Geometry as rg

ids = [i for i in range(5)]
points = [rg.Point3d(i,0,0) for i in range(4)]
lines = [rg.Line(rg.Point3d(i,0,0),rg.Point3d(i+1,1,0)) for i in range(3)]

data = {}

data["ids"] = ids
data["points"] = points
data["lines"] = lines

result = data

이렇게 출력하면?


이렇게 출력하면 키의 목록으로 출력됩니다.

등급별 출력


가져오고 싶은 데이터를 클래스 변수로 출력하면 클래스의 상태를 유지하고 데이터를 펼칠 수 있습니다.
4
{
    'lines': [<Rhino.Geometry.Line object at 0x000000000000009E [0,0,0,1,1,0]>, <Rhino.Geometry.Line object at 0x000000000000009F [1,0,0,2,1,0]>, <Rhino.Geometry.Line object at 0x00000000000000A0 [2,0,0,3,1,0]>], 
    'points': [<Rhino.Geometry.Point3d object at 0x00000000000000A1 [0,0,0]>, <Rhino.Geometry.Point3d object at 0x00000000000000A2 [1,0,0]>, <Rhino.Geometry.Point3d object at 0x00000000000000A3 [2,0,0]>, <Rhino.Geometry.Point3d object at 0x00000000000000A4 [3,0,0]>], 
    'ids': [0, 1, 2, 3, 4]
}
수신된 구성 요소를 펼치면 대상이 안에 있다는 것을 똑똑히 알 수 있다.
import Rhino.Geometry as rg

ids = [i for i in range(5)]
points = [rg.Point3d(i,0,0) for i in range(4)]
lines = [rg.Line(rg.Point3d(i,0,0),rg.Point3d(i+1,1,0)) for i in range(3)]

data = {}

data["ids"] = ids
data["points"] = points
data["lines"] = lines

class result:
    pass
    
result.data = data

주의점


rhinoscriptsyntax로 대상을 제작할 때 GUID 대상으로 제작하면 가져갈 수 없습니다.
예컨대 앞서 말한 것처럼 방금 선을 rhinoscriptsyntax로 만들면 GUID 대상이 되지만 이 상태에서 반에 들어가 가져가려면1. Solution exception:オブジェクト参照がオブジェクト インスタンスに設定されていません。이런 실수.
bake되지 않은 GUID 개체는 어셈블리 내에서만 참조할 수 있습니까?
자세한 분 있으면 알려주세요.
lines = result.data["lines"]
points = result.data["points"]
ids = result.data["ids"]

최후


반에서 받을 수 있다면 명세서를 일일이 열거할 필요가 없고 데이터 하나만 있으면 교환할 수 있어 편리하다.
이 외에도 Diquena에 []를 더하는 방법이 있는데, GhPythhon 안에서만 실행될 수 있는 코드일 수 있기 때문에 이번에는 추가하지 않겠습니다.
참고페이지에도 그쪽 방법이 있어요.

참고 자료


How to access the exported dictionary in ghPython?

좋은 웹페이지 즐겨찾기