AutoCAD .Net API 프로그래밍시 아래와 같이 에러가 뜨는 경우가 있다.

No bracketed keyword list

실행하면 이렇게 에러뜸

 

디버깅시 이렇게 뜸

 

해결방법

대괄호를 일반 출력 창이라 별로 신경 안썼는데 이 코딩에는 필요한듯..;;

Visual Studio 설치

https://visualstudio.microsoft.com/ko/downloads/

 

Visual Studio Tools 다운로드 - Windows, Mac, Linux용 무료 설치

Visual Studio IDE 또는 VS Code를 무료로 다운로드하세요. Windows 또는 Mac에서 Visual Studio Professional 또는 Enterprise Edition을 사용해 보세요.

visualstudio.microsoft.com

 

C# 첫 시작!

새 프로젝트 만들기 클릭!
윈도우의 cmd 창으로 만들 틀 선택!
만들 프로젝트 이름 적고 다음
대상 프레임워크 선택 후 만들기! (아직까진 그냥 아무거나 선택 후 진행하면됨)

 

자동으로 이렇게 만들어 줍니다 ㅎㅎ (소스코드 우측 상단의 combo는 재미요소인데 다음에 소개해드리겠습니다:P);
Ctrl + F5 누르면 이렇게 실행창이 뜹니다!

 

 

자료형
타입 허용범위 크기 사용 예
sbyte -128 ~ 127 8비트 sbyte s = 1;
byte 0 ~ 255 //  
short -32,768 ~ 32,767 16비트  
ushort 0 ~ 65,535 //  
int -21억? ~ 21억 32비트  
uint 0 ~ 42억9천만(구 바람 풀경) //  
long -900경 ~ 900경 64비트  
ulong 0 ~ 1800경 //  
float ±1.5e-45 ~ ±3.4e38 4바이트 float f = 1.5f;
double ±5.0e-324 ~ ±1.7e308 8바이트  
decimal ±1.0 X 10^-28 ~ ±7.9 X 10^28 16바이트 decimal m = 2.5m;
char U+0000 ~ U+FFFF 유니코드 16비트(문자) char ch = "H";
string   문자열 string sr = "Hello";
bool   true, false bool b = true;

자료형변환 - 자료형의 크기가 작은 변수의 값을 큰 자료형의 변수에 넣을 순 있지만, 큰 -> 작은 불가능. 근데 작은 변수의 자료형의 허용 범위 안에 형변환을 통해 자료 넣기가 가능.

예) 

i2에 L2의 값을 넣을 순 없지만, i3와 같이 (int)L2를 하면 넣을 수 있다.

 

변수

다른 언어들과 비슷하게, 앞에 언더바 인 _ 는 사용 가능하지만, 예약어(int, char 같이 언어에서 이미 사용중인것)는 사용불가하며, Console을 쓸 경우 써지긴 하는데 위의 Console.WriteLine 에서 Console에 빨간줄이 생긴다;;

 

하다가보니, 뫼 산山가 써집니다?

 

 

 

 

 

 

 

 

상수

const를 일반 자료형 앞에 붙이면, 처음 선언할 때의 값을 고정값으로 하고, 변경이 되지 않는다.

 

배열

보시는 것 처럼, 위에 arr은 5라는 크기를 지정해 주어서, arr[0 ~ 4] 까지의 크기를 가지며, arr[5]를 하면 오류를 발생하여 // 로 주석 처리 했다.

 

맞다 // 주석처리 해놓은 것은 다 오류를 발생시켜서 해놓은 것이다.

 

아래의 arr2는 new int[] {여러개} 해놨는데, 이건 여러개의 크기만큼 자동으로 크기를 잡는 것이며, 초반에 해놓고 arr2[0~2]라는 크기가 지정되었는데, 그 위의 크기 3번째나 100번째에 데이터를 넣으려 하면 오류가 일어난다.

 

 

 

 

 

 

 

문자열

Substring을 사용하여 원하는 글자를 가져올 수 있다.(시작점0부터, 몇개 가져올지)

 

연산자

이건 다른 언어와 비슷하니 생략한다.

+ - * /

++ --

|| &&

!

<= >= < > == !=

?

 

조건문

if문

 

switch문

 

 

반복문

for문

 

 

foreach문

 

 

while문

 

do while문

https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.forms.form.keypreview?view=netframework-4.8

 

Form.KeyPreview Property (System.Windows.Forms)

--> Form.KeyPreview Form.KeyPreview Form.KeyPreview Form.KeyPreview Property 정의 이 문서의 내용 포커스가 있는 컨트롤에 이벤트가 전달되기 전에 폼이 키 이벤트를 받을지 여부를 나타내는 값을 가져오거나 설정합니다.Gets or sets a value indicating whether the form will receive key events before the event is passed to

docs.microsoft.com

적절한 곳에 KeyPreview = true; 하면 키가 동작하기 시작함..

(저는 키다운 받는 코드 전에 넣었음)

p1.SizeMode에서 지정해주는 것은 그림을 어떤 형식으로 가져오는지 입니다. 저는 꽉 채움으로 했어요

 

이렇게 하시면 됩니다(public Form1() 위의 Button btn;은 Form1_Load에 넣어도 되요 맘대로~ 

 

우선 폼의 사이즈는 1000, 500입니다.

Padding은 0, 0, 0, 0이구요

 

저기 픽쳐박스의 크기는 100, 100입니다.  또한 Padding과 Margin은 다 0이구요.

위 그림에서 잘 안보이 실 수도 있는데요, 격자(모눈) 간격은 100입니다.

 

저 이미지에 위치값을 100을 더하면 제 생각으론 바로 한 칸만 딱 맞게 움직여야 할 것 같은데 아래와 같이 빈 공간이 있네요.. 이거 어떻게 빈 공간을 없앨까요?

(위에 합성 잘못해서 약간 균형이 이상하지만, 서로간의 움직임에 동일한 간격이 있습니다)

 

 

 

위와 같이 주 디스플레이의 크기가 125%로 되어 있어서 이미지에 문제가 있었던 것이였습니다.

그리하여.. 'DPI 비인식 프로세스로 Visual Studio 다시 시작' 글귀를 누르면 자동으로 다시 시작이 되고

 

이와 같이 모눈 간격이 100으로 셋팅 했는데, 이미지가 줄어든 것을 보실 수 있습니다.

100, 100에서 88, 80으로요.. 그래서 다시 100, 100으로 만들어 주고 실행하면 빈틈이 없어집니다~

그읏!

윈폼으로 프로그래밍 실행했더니 화면 깜빡일 때 DoubleBuffered를 True로 해놓으면 깜빡임 없어지네요.

private void Form1_Load(object sender, EventArgs e)
{
        this.FormBorderStyle = FormBorderStyle.None;
        this.WindowState = FormWindowState.Maximized;
}

 

이렇게 해주거나

 

직접 Form1.cs [디자인] 창에서 폼 클릭하고 속성창에서 아래와 같이 설정하면 된다.

 

Form1과 Form2가 있는 경우에

 

Form1에서 Form2.Show();하면

Form1의 창과 Form2의 창을 둘다 사용이 가능하지만(버튼 같은 것들 동작가능)

 

 

Form1에서 Form2.ShowDialog();하면

Form1은 켜있지만, 사용이 불가능함. Form2만 사용가능.

가끔 프로그램 설치하는 창에서 작은창 하나 떳을 때 밖에창 클릭하면

소리나면서 화면 깜빡거리며 접근(사용)이 불가한 것처럼.

비표시 오류(Suppression) 상태

오류 CS0246 'Mathematics' 형식 또는 네임스페이스 이름을 찾을 수 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요.



나온지 1년정도 된 책을 보고 그대로 따라 했는데도 불구하고 하단쪽 빨간줄 에러뜨면서 안된다..


그래서 컴파일러가 하라는 방법대로 시도해본다.
































파란 글씨 잠재적 수정 사항 표시에 가져가면



왼쪽에 목록이 이렇게 쫙 뜬다.

using ConsoleApp1;

ConsoleApp1.Mathematics

.....


이때 제일 위 using ConsoleApp1; 이것을 클릭하면




자동으로 제일 윗줄에 using ConsoleApp1; 이 추가가 된다. 

그러면 해결 끝~



































-------------------------------------------------------------------------------------------------------

쌩판 모를때라 지금보면 어이없는 오류 ㅋㅋ

namespace ConsoleApp1안에 class Program을 넣으면 끝날 문제를..

+ Recent posts