본문 바로가기

Programming97

[Unity3D] 마우스 클릭 시 UI인지 3D객체 인지 구별 ✔ Unity3D UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject() UI에 가려져있는 3D 오브젝트 객체가 마우스 클릭 시 OnMouseDown()이나 OnMouseUp() 이벤트 콜이 된다. UI인지 판별하는 방법은 간단하다. EventSystem.current에서 현재 클릭한 이벤트에 대한 정보를 확인할 수 있다. public void OnMouseDown() { if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject() == true) return; // do.. } EventSystem.currrent.IsPointerOverGameObject().. 2020. 10. 16.
[Unity3D] 3D오브젝트 공간 정렬 ✔ Unity3D - 오브젝트 공간 자동 정렬 Object Position Sort 공간에 오브젝트를 특정 한 기준점에서 좌우로 정렬하고 싶은 경우에 사용한다. X, Z방향으로 정렬하고 추가, 제거 가능 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjectPositionSort : MonoBehaviour { //테스트를 위한 오브젝트 public GameObject testobj; //기준 포지션 public Transform standardPosition; private Vector3 standardVector; //기준포지션안에 관리될 오브젝트들 private List item.. 2020. 9. 21.
[AutoCAD .Net] C# 점과 선 사이의 최단 거리 구하기 ✔ C# - 점과 직선사이의 최단거리 구하기 AutoCAD에서 하나의 라인과 포인트를 선택하고 최단거리를 구하는 함수입니다. Point3d point -> AutoCAD에서 선택된 포인트를 넘겨받음 Point3d lineStartPoint -> AutoCAD에서 선택된 라인의 시작 포인트를 넘겨받음 Point3d lineEndPoint -> AutoCAD에서 선택된 라인의 끝 포인트를 넘겨받음 //직선과 점의 최단 거리를 구하는 함수 private double GetShortestDistance(Point3d point, Point3d lineStartPoint, Point3d lineEndPoint) { //X의 길이, Y의 길이를 계산 double dx = lineEndPoint.X - lineSta.. 2020. 7. 30.
[C#] 클래스 라이브러리(.dll) 프로젝트에서 Winform 사용하기 ✔ C# 클래스 라이브러리 프로젝트에서 윈폼 추가하기 Add Winform in DLL Project 타 프로그램에서 .dll로 읽어들여 기능을 Add-on을 하는 경우가 많다. 단순 프로젝트 생성을 WinForm을 생성하면 빌드시 exe형태로 나오기때문에 활용을 할 수 없다. 클래스 라이브러리 프로젝트를 만들어 Winform을 추가하고 타 프로그램에서 UI로 컨트롤이 가능하도록 만들어야한다. 먼저 클래스 라이브러리 프로젝트를 생성한다. 생성 후 참조에 우클릭을 하여 참조 추가를 누른다. 어셈블리 탭 -> System.Windows.Forms 선택 -> 확인. 이제 폼을 만들자. 프로젝트 우클릭 -> 추가 -> Windows Form ( 추가 -> 새항목 -> Windows Form으로 해도 무관 ) 추.. 2020. 6. 11.
[AutoCAD .Net] UnSelect Obejects In Document ✔ AutoCAD .Net - 선택된 항목 해제, 선택 항목 모두 해제 AutoCAD에서 선택된 항목들을 해제할때 사용되는 코드 아래는 선택된 항목 모두 해제하는 코드입니다. 특정 오브젝트만 해제하고 싶을 경우에는 해당 오브젝트 ID를 제외하고 넣으시면 됩니다. Autodesk.AutoCAD.ApplicationServices.Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Editor ed = acDoc.Editor; //AutoCAD 선택 모두 초기화 ed.SetImpliedSelection(new ObjectId[0]); 2020. 5. 27.
[AutoCAD .Net] Get Selected Objects In Document ✔ AutoCAD .Net C#- DWG 도면에서 선택된 오브젝트들을 불러오기 문자, 라인, 폴리라인 등 타잎별로 가져오기 AutoCAD에서 선택되어있는 항목들을 가져오는 코드입니다. 아래 코드는 선택된 오브젝트에서 문자를 확인하는 코드입니다. 라인이나 폴리라인, 원 등의 다른 Type을 얻고 싶다면 typeof(DBText)항목에서 DBText를 Line, Polyline, Circle 등으로 변경 후 활용하시면 됩니다. using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; private void GetSelectedItems(object s.. 2020. 5. 27.
[Revit .Net] Dynamo Version Upgrade in Revit 레빗 2020을 설치하면 자동적으로 다이나모 2.1 버전이 설치되어있다. 하지만 패키지를 사용할때에 2.1 버전 이상을 요구할경우가 많다. 레빗 안에 실행되는 다이나모의 버전을 업그레이드 하는 방법은 아래 영상에서 나타나있다. https://www.youtube.com/watch?v=wa6W5lWoIL8 2020. 5. 15.
[C#] 문자열에 포함된 공백 모두 삭제, 특정 문자 모두 삭제 ✔ C# - 문자열에 포함된 특정 문자 삭제 방법 All remove whitespace characters from a string 흔히 사용하는 Trim은 문자열의 앞뒤의 공백만 제거한다. String.Concat을 사용하여 특정문자를 찾아 문자열로 반환한다. public static string Concat (string str0, string str1, string str2, string str3) 공백 삭제 코드는 다음과 같다. using System.Linq; string str = "a b c d ef "; string re = string.Concat(str.Where(x => !char.IsWhiteSpace(x))); //결과 : re = "abcdef" 공백이 아닌 다른 문자를 삭제할.. 2020. 4. 28.
[Revit .Net] Add-in Reload - AddInManager ✔ Revit 2020 AddinManager .Net dll Add-in Reload or ReBuild Visual Studio에서 개발하여 Revit에서 바로바로 확인하고 싶지만 코드가 수정이 이루어지면 다시 Revit을 종료하고 다시 실행시켜야 한다. Revit 프로그램 자체가 무거운편이라 다시실행하는 시간이 무척이나 오래걸려 고생끝에 방법을 찾았다. AddinManager를 활용하는 것이다. AddinManager는 dll을 등록,해제 그리고 실행하는 역할을 담당한다. AddinManager를 사용하기 위해서는 해당버전의 SDK를 설치해야한다. 하지만 Revit 2020의 경우에는 SDK를 설치해도 AddinManager가 포함되어 있지 않다. ● Revit 2020 AddinManager 설치.. 2020. 4. 24.