*.lin을 이용하여 Line Type을 만들 수있으나, Multi Line은 해결책을 찾지 못하여 엄청난 고생을 하였다.

그에 따라 다음에 까먹을 까봐 이렇게 메뉴얼화 해놓으며, 다른 사용자 분들도 필요하면 사용하여 보기시 바랍니다.

Plant에서 Tracing Line을 그릴려고 하는데 기본 AutoCAD P&ID의 Line Type에서는 Tracing Line Type을 지원해 주지 않습니다.

그러면 추가하는 법을 아래에 서술하오니 참고하시기 바랍니다.

기술지원을 해준 투아이티씨솔루션(http://www.iitcsolution.com)의 김도겸씨에게 감사의 인사를 전합니다.

이만 ~

 

  1. AutoCAD P&ID 실행
  2. AutoCAD P&ID의 일반 도면 “Open”을 이용
     
  3. Open Dialog Box에서 반드시 추가(수정)할 Project 폴더로 이동하여 “projSymbolStyle.dwg” Open

  4. Command창에 “MLSTYLE” 명령 입력

  5. “Multiline Style”창에서 [New…] 실행

  6. “New Style Name”에 적당한 사용자 정의 명칭 부여 후 [Continue]

  7. “New Multiline Style : ???????”
    1. “Description” : 적당한 설명 문구 입력
    2. “Elements”의 라인 (기복적으로 두개)들의 설정값을 [Linetype]과 기타 설정 기능들을 활용 하여 변경
    3. 설정 반영 : [OK]
       
  8. “projSymbolStyle.dwg” [저장(save)]
  9. 해당 프로젝트 Open후 프로젝트명에서 Popup호출 후 “Properties” 실행(프로젝트 설정)

  10. “Project Setup”에서 “P&ID DWG Settings > P&ID Class Definitions > Engineering Items > Lines > Pipe Line Segments”로 이동 후 Popup Menu 호출 하여 [New] 실행
     
  11. “Create Class” Dialog Box를 이용한 설정
    1. “Class Name” : 유일한 값이어야 하며, 시스템에서만 인식되는 고유한 키값, 스페이스(띄어쓰기)와 특수문자를 제외한 값을 입력
    2. “Display Name of the Class” : 사용자가 알아보기 위한 값이며, 외부로 표시되는 이름
    3. [OK]

  12. 우측의 “Class settings : ~~~~”항목에서 “Line"의 [Edit Line…] 실행

  13. “Line Settings” Dialog Box를 이용한 설정
    1. “Show flow arrows” : 화살표 표시 여부(Pipe Line의 Flow(유체) 방향) (Default : No)
      => Yes
    2. “Flow arrow style” : 화살표 표시할 스타일 (Default : Flow Arrow Style)
    3. “Layer” : 도면 레이어 계층 설정 (Default : --- Use Current ---)
      =>”Process”로 지정하였으며, 알아서 레이어를 선택하시기 바랍니다.
    4. “Color” : 도면에 표시할 색상(Defalt : ByLayer)
      => “Blue”, 알아서 지정
    5. “Sline type: 도면에 표시할 Line Type (Default : Polyline)
      => “Mline”을 선택
    6. “Linetype” : (Default : Continuous)
      => 사용자가 작성한 스타일 선택
    7. “Line weight” : 라인 굵기 (Default : --- Use Current ---)
    8. “Tagging prompt: 라인 도면에 추가 시 자동 태킹 할지 선택(Default : Not a tagged component)
    9. “Gap priority” : Gap 값 설정, 0일 경우 추가 안됨… 0이상 입력(Default : 0)


  14. “Add to Tool Palette…”를 이용하여 팟레트에 추가
  15. “Project Setup”의 [Apply]와 [OK]를 눌러 설정 마무리
  16. Tracing Pipe Line Segment를 이용하여 확인

  17. 원하는 간격 또는 모양이 아닌 경우 “projSymbolStyle.dwg”에서 “MLSTYLE”을 이용하여 수정 후 저장하여 사용
    기존 MLType이 변경된 경우 해당 도면에서 “SYNCHSTYLES”을 이력하면 되나… 기존 스타일은 유지되고 새로 추가됨… 혹여나 잠재적인 버그가 있지 않을까 우려는 됨


 

출처 : 자작(userpark.net)

무지개참조 : http://documentation.devexpress.com/#WindowsForms/clsDevExpressSkinsSkinManagertopic

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace UserPark
{
    static class Program
    {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        [STAThread]
        static void Main()
        {
            //DevExpress 보너스 스킨 등록(활성화)
            DevExpress.UserSkins.BonusSkins.Register();
            //DevExpress.XtraEditors.XtraForm(SDI Form) 스킨기능 활성화
            DevExpress.Skins.SkinManager.EnableFormSkins();
            //DevExpress.XtraEditors.XtraForm(MDI Form) 스킨기능 활성화
            DevExpress.Skins.SkinManager.EnableMdiFormSkins();
           
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new TfrmMain());
        }
    }
}

Program.cs 파일에 Line 16~21 코드를 추가한다.

※ 반드시는 아니나…. 추천….

자세한 설명은 생략

  • Main 폼에 아래 소스 추가하면 스킨갤러리를 사용할 수 있다.
    • “DevExpress.XtraBars.RibbonGalleryBarItem” or “DevExpress.XtraBars.Ribbon.GalleryControl” 타입으로 “GalleryItemSkins”명으로 생성(추가) 하였을 경우 아래 코드를 소스에 추가하여 준다.
DevExpress.XtraBars.Helpers.SkinHelper.InitSkinGallery(GalleryItemSkins, true);

  • 스킨 종류 선언
    • Program.cs에 아래 소수 추가(“DevExpress Dark Style” 사용시)    ※반드시는 아니나…. 추천….
DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle("DevExpress Dark Style");
// or
DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = "DevExpress Dark Style";

DevExpress.LookAndFeel.UserLookAndFeel.Default.UseWindowsXPTheme = false;

 폼 소스 부분은 생략하고 처리부분만 기술한다.

  • Form Style : fsStayOnTop
  • 해당 폼을 TObject 형태로 구현 함수로 넘긴다
    (경우에 따라서 TForm으로 넘기던지 상속클래스 만들어서 넘기던지...그건 알아서...단, 구현부분 파라메터 타입과 구현부분도 거기에 맞추어서 ^^)

 

 

 구현 부분

  1. procedure ShowSaveDialogBox(Sender : TObject = nil)
  2. var
  3. saveDlg : TSaveDialog;
  4. SenderFormStyle : TFormStyle;
  5. isSenderFormStyleChange : Boolean;
  6. begin
  7. isSenderFormStyleChange := False;

    if (Sender <> nil) and Assigned(Sender) and (Sender is TForm) then

    saveDlg := TSaveDialog.Create(TForm(Sender))

    else

    saveDlg := TSaveDialog.Create(nil);

  8. saveDlg.Title := '파일 저장';
  9. saveDlg.Filter := 'TEXT 파일|*.txt';
  10. saveDlg.DefaultExt := 'txt';
  11. saveDlg.Options := saveDlg.Options + [ofOverwritePrompt];
  12. saveDlg.FileName := 'ExportText' + '.xls';
  13. if (Sender <> nil) and Assigned(Sender) and (Sender is TForm) and (TForm(Sender).FormStyle = fsStayOnTop) then
  14. begin
  15. //BEGIN 1안. 폼을 아래로 위치 시킨다(사라지는 효과 나타남)
  16. TForm(Sender).SendToBack;
  17. isSenderFormStyleChange = True;
  18. //END 1안.
  19. //BEGIN 2안. 폼을 일반 폼으로 변경함(화면이 심하게 깜빡거리는 단점)
    SenderFormStyle := TForm(Sender).FormStyle;
  20. isSenderFormStyleChange := True;
  21. TForm(Sender).FormStyle := fsNormal;
  22. Application.ProcessMessages; //(생략가능 혹시나 해서.....^^;;)
  23. //END 2안.
  24.  end;
  25. if saveDlg.Execute then
  26. begin
  27.  {처리 코드}
  28. end;
  29. if isSenderFormStyleChange = True then

    begin

  30. //1안.
  31. TForm(Sender).BringToFront;
  32. //2안.
  33. TForm(Sender).FormStyle := SenderFormStyle;
  34. Application.ProcessMessages; //(생략가능 혹시나 해서.....^^;;)
  35. end;
  36. end;

 

출처 : 자작(userpark)

이 글은 스프링노트에서 작성되었습니다.

 Showmessage 박스 Owner가 Application으로 되어져 있는 현상 때문에 Form이 StayOnTop일 경우 아래에 숨어버리는 현상 발생

해결 방법은 아래 소스.... Screen.ActiveForm을 이용한 방법

 

  1. TForm1 = class(TForm)
  2. {...생략...}
  3. procedure OnScreenActiveFormChange(Sender: TObject);
  4. private
  5. {...생략...}
  6. protected
  7. {...생략...}
  8. public
  9. {...생략...}
  10. end;
  11. procedure TForm1.FormCreate(Sender: TObject);
    begin
  12. Screen.OnActiveControlChange := OnScreenActiveFormChange;
  13. end;
  14. procedure TfrmUbBase_S.OnScreenActiveFormChange(Sender: TObject);
  15. begin
  16. if Assigned(Screen.ActiveForm) and ( (UpperCase(Screen.ActiveForm.ClassName) = UpperCase('TMessageForm')) ) then
  17. begin
  18. SetWindowPos(Screen.ActiveForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
  19. end;
  20. end;

 

출처 : 델마당 for Modify By Userpark

이 글은 스프링노트에서 작성되었습니다.

 Showmessage 박스 Owner가 Application으로 되어져 있는 현상 때문에 Form이 StayOnTop일 경우 아래에 숨어버리는 현상 발생

해결 방법은 아래 소스.... Screen.ActiveForm을 이용한 방법

 

  1. TForm1 = class(TForm)
  2. {...생략...}
  3. procedure OnScreenActiveFormChange(Sender: TObject);
  4. private
  5. {...생략...}
  6. protected
  7. {...생략...}
  8. public
  9. {...생략...}
  10. end;
  11. procedure TForm1.FormCreate(Sender: TObject);
    begin
  12. Screen.OnActiveControlChange := OnScreenActiveFormChange;
  13. end;
  14. procedure TfrmUbBase_S.OnScreenActiveFormChange(Sender: TObject);
  15. begin
  16. if Assigned(Screen.ActiveForm) and ( (UpperCase(Screen.ActiveForm.ClassName) = UpperCase('TMessageForm')) ) then
  17. begin
  18. SetWindowPos(Screen.ActiveForm.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
  19. end;
  20. end;

 

출처 : 델마당 for Modify By Userpark

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts