기본 콘텐츠로 건너뛰기

2014의 게시물 표시

여러개의 Edge에서 Wire 생성하기

다음과 같은 순서를 따라 여러개의 Edge에서 Wire를 생성할 수 있습니다. 1. ShapeAnalysis_FreeBounds::ConnectEdgesToWires 2. ShapeFix_Wire 클래스를 이용하여 Fix 3. ShapeAnalysis_FreeBounds::Connect WiresToWires TopExp_Explorer exp, exp2; TopoDS_Wire wire, outWireShape; TopoDS_Face newface; for(exp.Init(box, TopAbs_FACE); exp.More(); exp.Next()) { newface = TopoDS::Face(exp.Current()); outWireShape = TopoDS::Wire(BRepTools::OuterWire(newface)); for(exp2.Init(newface, TopAbs_WIRE); exp2.More(); exp2.Next()) { wire = TopoDS::Wire(exp2.Current()); if(wire==outWireShape) continue; BRepTools_ReShape reshaper; reshaper.Remove(wire); newface = TopoDS::Face(reshaper.Apply (newface)); } } 제목 Probleme creating a face with holes How to catch the exceptions? http://www.opencascade.org/org/forum/thread_26207/?forum=3 http://www.opencascade.org/org/forum/thread_24784/?forum=3 http://www.opencascade.org/org/forum/thread_23492/?forum=3

문자열 함수들

1. SUBSTR     문자열의 일부분을 돌려주는 함수입니다.     update T_LINE_DATA_120588 set draw_no='ID-'||AREA||SUBSTR(draw_no , 3) 2. REPLACE     문자열의 일부분을 주어진 문자열로 대체하는 함수입니다.     update T_LINE_DATA_120588 set draw_no=replace(draw_no , '1A-1A' , '1A') where     draw_no like 'ID-1A-1A%'

R6034

VC++ 단독으로 프로그램을 작성하는 것이 아니라 .NET , Python과 연동하여 개발하다 보니 이전에 보지 못했던 많은 에러를 새롭게 만나고 있는 중입니다. 최근 들어 만난 에러 R3064 처음보는 에러에 약간 당황하였지만 구글링으로 검색을 해보니, manifest를 추가하여 다시 컴파일하면 된다고 했지만 저의 경우 디버거로 컴파일 했을때 위와 같은 에러가 발생하고 릴리즈로 컴파일하면 에러가 발생하지 않았습니다. 즉 manifest 문제가 아닌듯 했습니다. 다시 구글링하여 좀더 찾아보니 dll이 충돌할때 위와 같은 에러가 발생할 수 있다고 합니다. 저의 경우 프로그램에서 Python을 연동하고 있는데 디버거 모드에서 디버거 Python dll을 링크한게 아니라 릴리즈 Python dll을 연동하다 보니 MSVCR90D와 MSVCR90이 동시에 링크가 되어 dll 충돌이 발생했습니다. 릴리즈에서는 MSVCR90만 링크하니 위와 같은 에러가 발생하지 않은것이었습니다. 진행중인 프로젝트를 VS2010으로 업그레이드를 하려다가 위의 문제로 포기ㅜㅜ MSVCR100.DLL과 Python에서 사용하는 MSVCR90.DLL의 충돌로 위와 같은 메세지가 뜸

80040154 오류로 인해 CLSID가 {xxxx-...}인 구성 요소의 COM 클래스 팩터리를 검색하지 못했습니다.

원문보기 .NET 으로 만든 응용프로그램에서 com 객체를 호출한 경우 Windows7 64bit 에서 제목과 같은 에러가 발생했다. Win32 COM 과 .NET 프로그램간의 호환성 때문에 생긴 문제였다. 원인은 .NET 실행시 JIT 컴파일러에 의해 최적화된 기계어로 변환되기 때문.. Win32 COM은 컴파일시.. Win32 COM에 맞춰 빌드 속성에서 하위버전으로 맞춰 컴파일을 다시하는 방법도 있지만 메인 프로젝트가 .NET이라면 참조되는 모든 프로젝트를 다 바꿔야할 노릇.. 또 다른 방법은 COM+를 이용하여 독립적으로 만드는 것이다. 분리시키는 방법은 아래 주소해서 확인할 수 있다. http://support.microsoft.com/kb/281335 나의 경우는 Win32 COM DLL을 64비트 .NET 프로그램에서 참조하니 COM 객체를 제대로 호출하지 못하였습니다. 그래서 .NET 프로그램의 Target Machine을 x86으로 설정하니 제대로 COM 객체를 호출하였습니다.

Mixed C++/CLI TypeLoadException Internal limitation: too many fields

원문보기 Mixed C++/CLI TypeLoadException Internal limitation: too many fields up vote 3 down vote favorite On a quest to migrate some new UI into Managed/C# land, I have recently turned on Common Language Runtime Support (/clr) on a large legacy project, which uses MFC in a Shared DLL and relies on about a dozen other projects within our overall solution. This project is the core of our application, and would drive any managed UI code that is produced (hence the need to turn on clr support for interop). After fixing a ton of little niggly errors and warnings, I finally managed to get the application to compile.. However, running the application causes an EETypeLoadException and leaves me unable to debug... Doing some digging, I found the cause to be "System.TypeLoadException: Internal limitation: too many fields." which occurs right at the end of compilation. I then found  this link  which suggests to break the assembly down into two or more dlls. However

[S3D] Flaver 없애기

SP3D에서 Flaver라고 Caching된 데이타를 이용해서 모델링 속도를 빠르게 하는데, 이게 개발하는 입장에서는 엄청 귀찮은 존재입니다. 한번 그려지고 나서 코드를 수정해도 수정된 코드로 형상이 그려지는것이 아니라 Flaver가 그려지게 됩니다. 엄청 짜증나는 일입니다. Flaver를 사용하지 않을 수는 없고 제거하는 방법을 알아보겠습니다. 1. Project Management에서 제거 Project Management 선택     옵션 선택 후 Analyze 클릭 2. Code에서 제거    아래 코드를 사용해서 Caching을 하지 않도록 합니다.(그러나 제대로 되지 않는것 같습니다)    'No Caching    pSymbolDefinition.CacheOption = igSYMBOL_CACHE_OPTION_NOT_SHARED

Python 배포하기

MFC로 만든 프로그램에 python을 embedding하여 사용중인데 배포에 문제가 발생했습니다. 즉 python이 설치된 컴퓨터에는 제대로 작동하나 그렇지 않은 컴퓨터에는 python 코드가 실행되지 않는다는 겁니다.(py2exe로 python dll과 library.zip 파일을 생성) 그렇다고 모든 사용자들에게 python을 설치하고 프로그램을 실행하라고 할 수도 없는 일이구요... 그래서 구글링을 하여 찾아보니 python에 있는 DLLs와 Lib 폴더를 프로그램 폴더에 복사하여 배포를 하면 된다고하여 그렇게 해보았더니... 성공!!! 프로그램 폴더 구조 + 응용 프로그램 pythonxx.dll  -- + python    -- + DLLs : python에 있는 DLLs 폴더에 있는 모든 파일을 복사합니다.    -- + Lib : python에 있는 Lib 폴더에 있는 모든 파일을 복사합니다. 이렇게 하니 단점은 프로그램 배포 파일의 크기가 커진다는거~~ DLLs,Lib 폴더를 압축하여 배포 파일을 생성하였는데도 기존보다 약 10M 정도가 큽니다.

C++ 구조체 포인터의 값을 C# 구조체 배열로 가져오기

원문보기 C++  구조체 포인터의 값을  C#  구조체 배열로 가져오기 -         C++ Struct 1 typedef   struct   _DATASTRUCT  {          wchar_t   name [20];          wchar_t   path [255];          int   level ; }  DATASTRUCT , * LPDATASTRUCT ; -      C# Struct 1 [ StructLayout ( LayoutKind . Sequential ,  CharSet = CharSet . Unicode )] public   struct   DATASTRUCT { [ MarshalAs ( UnmanagedType . ByValTStr ,  SizeConst  = 20)] public   string   name ;        [ MarshalAs ( UnmanagedType . ByValTStr ,  SizeConst  = 255)] public   string   path ; public   int   level ; } C++  과  C#  의 구조체는 앞과 같다 . -      C#  예제 코드 int   MAX_COUNT  = 10; DATASTRUCT []  dataStructs ;  [ DllImport ( @".\SendDataObject.dll" ,  CharSet  =  CharSet . Unicode )] private   static   extern   int   GetDatas ( DATASTRUCT []  dataStruct ,  int bufSizeCount ,  ref   IntPtr   returnPtr ); . . IntPtr   returnPtr  =  IntPtr . Zero ; dataStructs  =  new