본문 바로가기

반응형

분류 전체보기

(77)
다이나모에서 딕셔너리 활용하여 코드 리팩토링 하기 도입: 비주얼 스크립팅의 장점과 한계 다이나모는 작성하기 직관적이고 쉬운 대신에, 목적을 자세히 구현할 수록 코드의 복잡도가 순식간에 증가한다는 단점이 있습니다. 딕셔너리란? “Dictionary” 라는 영단어는 “사전” 이라는 한국어 단어에 대응하는 단어입니다. 이렇게 짝을 지어 대응시킨 정보의 형태를 Dictionary 자료형이라고 하고, 그림처럼 중괄호 안 쪽에 콜론으로 대응시킨 데이터 쌍의 형태로 이루어집니다. 이런 대응되는 정보라는 특징을 이용하면, 하나의 꾸러미로 함께 돌아다니는 데이터를 만들 수 있습니다. 저를 규정하는 정보를 한번 나열해 봤습니다. 아까 dictionary에서 보던 자료의 형태와 굉장히 유사하죠? 굉장히 직관적인 형태의 데이터 이기도 합니다. 이렇게 중괄호만 양쪽 끝에 붙여..
물려줄 것이라고는 속성과 메소드 뿐이구나..파이썬 클래스 상속 알아보기 객체를 왜 만들고, 왜 상속을 하는가? 객체란? 객체는 정보의 덩어리를 의미합니다. 눈앞에 있는 가장 간단한 사물을 봐도, 단 한가지 종류의 정보 만으로는 기술할 수 없다는 것을 잘 느낄 수 가 있습니다. 지우개 하나 만 보더라도, 물체가 가진 형상의 치수와 경도, 그리고 구입한 날짜와 현재 사용 정도 등 정량적으로 기술 할 수 있는 항목만 나열해봐도 손가락 10개가 빠듯해지죠. 그리고 우리가 세상을 인식하는 기본 틀이기도 합니다. 컴퓨터는 결국에는 순차적으로 내리는 명령을 수행할 뿐이지만, 코드를 작성하는 단계에서는 다양한 상황에 다양한 기능을 수행하는 복잡한 프로그램을 구상하려면 절차적 프로그래밍으로는 곧(저의 경우 1분만에) 한계에 봉착합니다. 가공할 천재라면 절차적 프로그래밍으로도 얼마든지 시스템..
Dynamo로 비트연산 구현(전가산기, 리플 자리올림수 가산기) - 예고 논리연산자를 이용한 비트 연산을 다이나모로 구현해봤습니다. 1bit 단위의 가산기와, 이것들을 연달아 4개를 이어서 4비트 가산기를 만들었습니다. 나중에 비트 연산을 통한 덧셈 구현과, 보수를 이용한 뺄셈 구현까지 포스팅 하겠습니다. 구현된 파일이 궁금하신 분들은 아래 첨부를 보세요. 이 카테고리에는 꿀팁들을 미리 사진 한, 두장으로 정리해서 그림과 짧은 글 형식으로 미리 올리려고 합니다. 그다음에 여유가 생기면 해당 내용을 자세히 포스팅할 텐데, 만약 댓글로 피드백 주시면 포스팅을 최대한 빨리 하도록 하겠습니다~
파이썬과 다이나모 문자열 형식화 프로그램이 연산한 결과를 보기 좋게 문자열로 포장해서 출력하는 방식은 중요합니다. 파이썬에서 문자열을 형식화하는 방법은 여러 가지가 있는데, 그중에서 가장 사용하기 편리한 방식은 f-string 방식이라고 합니다. 들어보신 분도 있을 거고 못 들어보신 분도 있을 텐데, 중요한 것은 이게 참 쉽고 편한 방식이라는 겁니다. 그런데 다이나모에서 문자열을 형식화 하고 싶으면 어떻게 하면 될까요? 되긴 되지만 조금은 돌아서 가는 방법이라 갑갑한 측면이 있습니다. 다이나모에서의 문자열 형식화 에를 들어서 보여드리자면 이런 식입니다. 핵심은 String.Replace 노드이긴 한데, 파이썬이나 다른 프로그래밍 언어에서 가능한 방식의 문자열 형식화를 다이나모에서 구현하려면 꽤나 골치를 썩여야 합니다. 엄청 복잡하죠? ..
다이나모에서 딕셔너리를 데이터 구조체 처럼 사용하기 - 포스팅 예고 다이나모에서도 json object와 같이 데이터 구조체를 구현하고 활용하고 싶은 때가 있습니다. 그럴 때 복잡하고 다양한 기능을 구현하기 위해서는 파이썬 스크립트 노드의 힘을 빌려야 하지만, 조금 간단한 수준으로 데이터 구조체를 구현하고자 한다면 “딕셔너리” 가 좋은 방법이 되어 줍니다. 위에 있는 코딩은 레빗 벽체가 가진 속성 중 일부만을 추려서, 나의 의도대로 수정된 객체를 만들어 두고 필요할 때마다 데이터를 꺼내 쓰는 과정을 단순화하여 구현한 샘플입니다. 2~3개월 정도의 시간 뒤에 정식 포스팅으로 재 발행할 예정이며, 위 내용에 관심이 있으시면 댓글 달아주시면 빨리 작업하도록 하겠습니다. 이 카테고리에는 꿀팁들을 미리 사진 한, 두장으로 정리해서 그림과 짧은 글 형식으로 미리 올리려고 합니다. ..
파이썬 함수 데코레이터를 이용해서 함수 범용성 높이기(리스트 레벨구조 기능 추가) 다이나모 파이썬 스크립트에서 리스트 레벨 구조 기능 추가하기(feat. Python decorator function) 파이썬은 동적 타입을 지원하기 때문에 함수 인자들의 자료형을 그렇게 신경 쓰면서 함수를 디자인하지 않아도 된다는 장점(?) 이 있습니다. 그래서 프로그래밍을 처음 접했을 때 진입장벽이 낮고, 배우기 쉽습니다. 게다가 타입에 신경쓰지 않는 상황이라면 상대적으로 규모가 작은 코딩인 경우가 많으니, 소규모의 스크립팅 목적으로도 파이썬이 참 적당합니다. 그래서 비주얼 프로그래밍인 다이나모에서도 파이썬 스크립트 노드가 자주 활용됩니다. 그런데 단일개체를 입력받아서 결과를 반환하는 함수를 만들고 나면, 리스트와 같은 다중 항목들을 처리하기 위해서는 만든 함수를 가지고 for 문을 구성해야 하는데 ..
다이나모 GroupByFunction VS GroupByKey 여러 개의 객체를 포함한 리스트는 필요에 따라 내포된 리스트 (nested list)로 재편될 필요가 있습니다. 가장 떠올리기 쉬운 사례로는 프로젝트에 존재하는 모든 그리드를 축방향에 따라서 재분류하는 사례가 있겠군요. 말 나온 김에 바로 해볼까요? 일단 그리드 마련하기 빈 프로젝트를 열고 그리드를 그려줍시다. 개수는 상관없고, x축 방향과 y축방향으로 적당한 개수의 그리드를 그려주면 됩니다. 이렇게 대충 그려주세요. 실습을 위한 준비물이니 그리드 간격 같은 건 신경 쓰지 않아도 됩니다. 그다음에는 다이나모를 실행해야겠죠? 다이나모를 열고 빈 캔버스에 일단 다음과 같이 작성해 봅시다. 이렇게 두 개의 노드를 배치하면 프로젝트 내에 존재하는 모든 Grid element들을 가져올 수 있습니다. X축 방향과..
다이나모에서 ReplaceByCondition 활용 방법 리스트의 원소를 치환하고 싶어졌다 다이나모 노드 중에서 리스트 중 특정 원소를 치환하는 노드가 있습니다. 하나는 ReplaceItemAtIndex노드이고 다른 하나는 ReplaceByCondition노드입니다. 보통 이해하기 쉬운 노드는 ReplaceItemAtIndex 노드입니다. 먼저 ReplaceItemAtIndex 노드를 써서 치환해보자 이유는, 사용법이 좀 더 직관적이기도 하고, index만 건드리면 되기 때문에, 하드 코딩의 형식으로 원하는 인덱스만 직접 지정해서 치환하는 등의 활용도 가능하기 때문입니다. 그런데 한 번에 하나의 인덱스만 치환해주는 단점이 있어서, 한 리스트의 여러 개의 원소를 동시에 치환하고 싶으면 좀 노드 처리를 지저분하게 해야 합니다. 또 어떤 조건을 만족하는 원소들의 인..

반응형