شما به عنوان مهمان از سایت دیدن می فرمایید.برای دسترسی به دیگر امکانات لطفا وارد سایت شوید!

در قسمت قبل ترسيم يك نقطه در مختصات دلخ?اه را آم?زش دادم. قرار شد اين جلسه نح?ه ترسيم مجم?عه اي از نقاط كه در?ن يك فايل متني قرار دارند آم?زش داده ش?د. در ?اقع اينكار بيشتر مرب?ط به VB است تا ات?كد.
خ?ب هم?ن كد قبلي ر? ببينيم :
Sub Example_AddPoint()
Dim pointObj As AcadPoint
Dim location(0 To 2) As Double
location(0) = 5
location(1) = 5
location(2) = 0
Set pointObj = ThisDrawing.ModelSpace.AddPoint(location)
End Sub
Dim pointObj As AcadPoint
Dim location(0 To 2) As Double
location(0) = 5
location(1) = 5
location(2) = 0
Set pointObj = ThisDrawing.ModelSpace.AddPoint(location)
End Sub
فرض كنيم فايل ما در مسير C:\Points.txt قرار دارد ? فرمت فايل عبارتست از شماره نقطه ? X ?Y ? Z كه با Comma از هم جدا شده اند.خ?ب برنامه ر? به ص?رت زيرتغييرميدهيم :
Sub Example_AddPoint()
Dim pointObj As AcadPoint
Dim location(0 To 2) As Double
Dim pointname As String
Open "c:\points.txt" For Input As #1
While Not EOF(1)
Input #1, n, x, y, z
location(0) = Val(x)
location(1) = Val(y)
location(2) = Val(z)
Set pointObj = ThisDrawing.ModelSpace.AddPoint(location)
Wend
Close #1
End Sub
Dim pointObj As AcadPoint
Dim location(0 To 2) As Double
Dim pointname As String
Open "c:\points.txt" For Input As #1
While Not EOF(1)
Input #1, n, x, y, z
location(0) = Val(x)
location(1) = Val(y)
location(2) = Val(z)
Set pointObj = ThisDrawing.ModelSpace.AddPoint(location)
Wend
Close #1
End Sub
در خط 3 آبجكتي بنام PointObj با خص?صيت نقطه ايجاد ميش?د. اين خط به ات?كد ميفهماند كه از اين به بعد با PointObj به عن?ان يك نقطه برخ?رد كند. خط 4 آرايه اي بنام Location تعريف ميكند كه بت?انيم مشخصات نقطه را در?ن آن بريزيم. در خط 5 متغيري بنام pointname معرفي ميكنيم تا اسم نقطه را در?ن آن بريزيم. در خط 7 فايل را براي خ?اندن باز ميكنيم . مثل كتاب خ?اندن ، يعني تا كتاب باز نش?د كه نميت?انيم محت?ياتش را بخ?انيم. در ?اقع open فايل را باز ميكند. For input به ات?كد ميفهماند كه فايل براي خ?اندن باز شده است. اگر قرار ب?د چيزي در فايل بن?يسيم فايل را For output باز ميكرديم. As #1 شماره اي به فايل ميدهد يعني از حالا به بعد برنامه فايل را نه با اسمش كه با شماره اش ميشناسد. دقت كنيد در انتهاي برنامه با دست?ر Close #1 فايل را ميبنديم. در خط 8 بعد از باز شدن فايل بايد خط به خط فايل را بخ?انيم براي اينكار از حلقه while …..wend استفاده ميكنيم ? فرمانها را در?ن اين حلقه مين?يسيم. While not eof يعني اينكه تا زمانيكه فايل به انتها نرسيده دست?رات را اجرا كن. خط 9 يك خط از فايل را ميخ?اند ? اسم نقطه را در?ن n ? ط?ل را در?ن X ? عرض را در?ن Y ? ارتفاع را در?ن Z ميريزد.در خط?ط 11 تا 13 مختصات نقطه در?ن آرايه Location ريخته ميش?د. فرمان val قبل از X ?Y ? Z به برنامه ميگ?يد كه X ?Y ? Z را ا?ل به عدد تبديل كن بعد در?ن آرايه بريز. چ?ن ?قتي ما از فايل مختصات نقاط را ميخ?انيم به ص?رت متن ميخ?انيم ? بايد تبديل به عدد ش?د.خط 15 به ات?كد فرمان ترسيم نقطه را ميدهد.خط 16 حلقه را ميبندد. خط 18 هم فايل را ميبندد. يك نكته اينجا مهم است. مطمئن ش?يد فايل نقاط تا آخرين سطرش حا?ي مختصات باشد. چ?ن اگر مثلا يك خط هم space باشد به ظاهر چيزي ندارد ?لي برنامه به عن?ان يك خط آنرا ميشناسد ? چ?ن نميت?اند مختصات را بخ?اند ايراد ميگيرد. حالا F5 را بزنيد تا برنامه اجرا ش?د ? نقاط را برايتان ترسيم كند. به همين سادگي.
ممكنه اين س?ال پيش بياد كه نرم افزارهاي مختلفي مثل LAND هستند كه نقاط را در?ن ات?كد ترسيم ميكنند. چه نيازي به برنامه ن?يسي است؟ خيلي م?اقع نياز است كه شما مجم?عه اي امكانات بدردبخ?ر ? شايد ك?چك را يكجا داشته باشيد. مثلا برنامه اي كه كارت?گرافهاي ما استفاده ميكنن پس از ترسيم نقطه ارتفاع آنرا به شكلي قرار ميدهد كه نقطه ?سط ارتفاع باشد . نكته مهم براي ما دراينجا اينه كه مثلا ارتفاع 1230.78 به شكلي ن?شته ش?د كه ا?لا بد?ن مميز باشد چ?ن قرار است نقطه نقش مميز را ايفا كند ? ثانيا نقطه بين 1230 ? 78 ?اقع ش?د. همچنين چ?ن نقاط برداشتي ما داراي كد هستند برنامه با خ?اندن هر خط فايل با ت?جه به كد نقطه بل?ك مرب?ط به آن نقطه را هم ترسيم ميكند مثلا بل?ك درخت ،تير برق ? ... . بعضي م?اقع هم هست كه ميخ?اهيد فقط نقاط يه محد?ده خاص را ترسيم كنيد. همچنين نقاط هر ايستگاه داخل لايه همان ايستگاه ترسيم ميش?ند ? غيره.
عكس محيط برنامه ر? ميبينيد :

در درس بعدي پس از ترسيم نقاط نح?ه ن?شتن ارتفاع ? يا اسم نقطه در كنار نقطه آم?زش داده ميش?د ? همچنين نقاط را در لايه دلخ?اه ترسيم ميكنيم.
س?الات خ?دت?ن را در كامنتها مطرح كنيد تا همه ببينند ? اگه اينجا نن?شتيد به m.samaee[at]gmail.com ايميل بزنيد.
مطالب مرتبط
شما به عنوان مهمان از سایت دیدن می فرمایید.برای دسترسی به دیگر امکانات لطفا وارد سایت شوید!
#2 توسط: nazari
6 آذر 1386 13:16
متشکرم
#3 توسط: babak
8 آذر 1386 03:00
با تشکر از مطالب جالبت?ن .
در م?رد این برنامه که نقطه ر? به جای ممیز قرار میده میشه ت?ضیح بدین . آیا جایی هست که بشه دانل?دش کرد؟
در م?رد این برنامه که نقطه ر? به جای ممیز قرار میده میشه ت?ضیح بدین . آیا جایی هست که بشه دانل?دش کرد؟
#4 توسط: samaee
8 آذر 1386 14:58
بابك جان
مثلا به جاي 23.57 مين?يسه 57 23 در حاليكه نقطه دقيقا جاي مميزه. چ?ن ا?ن فضاي خالي بين 23 ? 57 هميشه مشخص نيست پيدا كردن ?سط ا?ن فاصله خالي مهمه.
متاسفانه نرم افزار عم?مي نيست.
مثلا به جاي 23.57 مين?يسه 57 23 در حاليكه نقطه دقيقا جاي مميزه. چ?ن ا?ن فضاي خالي بين 23 ? 57 هميشه مشخص نيست پيدا كردن ?سط ا?ن فاصله خالي مهمه.
متاسفانه نرم افزار عم?مي نيست.
#5 توسط: babak
8 آذر 1386 21:42
از این که ج?اب دادین ممن?ن
فکرنمیکنم برنامه ن?یسیش کار خیلی سختی باشه
اگه ما عددی که داریم مثلاً 23.75 ر? به د? قسمت صحیح ? اعشاری تقسیم کنیم ? با justify کردن راست قسمت صحیح ? به همین ص?رت چپ برای قست اعشار ? بعد د? فرمان dt ?po کار تم?مه ، البته فکر کنم !!!
فکرنمیکنم برنامه ن?یسیش کار خیلی سختی باشه
اگه ما عددی که داریم مثلاً 23.75 ر? به د? قسمت صحیح ? اعشاری تقسیم کنیم ? با justify کردن راست قسمت صحیح ? به همین ص?رت چپ برای قست اعشار ? بعد د? فرمان dt ?po کار تم?مه ، البته فکر کنم !!!
#6 توسط: samaee
10 آذر 1386 12:53
بابك جان
ا?ن?قت شما بجاي يك عدد د?عدد خ?اهيد داشت. يه 23 ? يه 75. ?لي اينجا 75 23 يك Object ته.
ضمن اينكه فاصله اي كه با دست?ر justify بين نقطه ? عدد ب?ج?د مياد براي اعداد مختلف فرق ميكنه ?اسه همين دقيقا ?سط نميفته.
درسته براي كسي كه مسلط باشه اصلا سخت نيست كه هيچ ?اقعا هم راحته.
ا?ن?قت شما بجاي يك عدد د?عدد خ?اهيد داشت. يه 23 ? يه 75. ?لي اينجا 75 23 يك Object ته.
ضمن اينكه فاصله اي كه با دست?ر justify بين نقطه ? عدد ب?ج?د مياد براي اعداد مختلف فرق ميكنه ?اسه همين دقيقا ?سط نميفته.
درسته براي كسي كه مسلط باشه اصلا سخت نيست كه هيچ ?اقعا هم راحته.
#7 توسط: se5966
7 بهمن 1386 16:53
با تشکر از شما
اگر بخ?اهیم این نقاط را با خط به هم ?صل کنیم چه باید بکنیم
اگر بخ?اهیم این نقاط را با خط به هم ?صل کنیم چه باید بکنیم
#8 توسط: samaee
7 بهمن 1386 17:33
se5966,
براي اينكار بايد Object خط را معرفي كنيد ? سپس با اين نقاط خط م?رد نظر را رسم كنيد. مثال خ?د ات?كد به شكل زير است :
Sub Example_AddLine()
' This example adds a line in model space
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
' Define the start and end points for the line
startPoint(0) = 1#: startPoint(1) = 1#: startPoint(2) = 0#
endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#
' Create the line in model space
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
ZoomAll
End Sub
براي اينكار بايد Object خط را معرفي كنيد ? سپس با اين نقاط خط م?رد نظر را رسم كنيد. مثال خ?د ات?كد به شكل زير است :
Sub Example_AddLine()
' This example adds a line in model space
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
' Define the start and end points for the line
startPoint(0) = 1#: startPoint(1) = 1#: startPoint(2) = 0#
endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#
' Create the line in model space
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
ZoomAll
End Sub
#9 توسط: se5966
8 بهمن 1386 20:04
با تشکر از بذل ت?جه شما
اگر ما د? تا فایل متنی داشته باشیم که یکی مختصات باشد ? دیگری ترتیب همبندی اینها چگ?نه باید این خط?ط را به هم ?صل کرد
اگر ما د? تا فایل متنی داشته باشیم که یکی مختصات باشد ? دیگری ترتیب همبندی اینها چگ?نه باید این خط?ط را به هم ?صل کرد
#10 توسط: samaee
9 بهمن 1386 12:22
se5966,
اينجا اص?ل فرق نميكند. در اين مرحله بازي با ا?ن د?تا فايل است كه در ?اقع ترتيب را مشخص ميكند ? شكل كشيدن خط همان است كه ب?د. اگر نياز است به ايميل من بفرستيد تا ببينم فرمت فايلها چط?ريه.
اينجا اص?ل فرق نميكند. در اين مرحله بازي با ا?ن د?تا فايل است كه در ?اقع ترتيب را مشخص ميكند ? شكل كشيدن خط همان است كه ب?د. اگر نياز است به ايميل من بفرستيد تا ببينم فرمت فايلها چط?ريه.
اطلاعات
اگر شما عضو باشيد، فقط مي توانيد نظر ارسال کنيد
تبلیغات
جستجو
منوي اصلي
ورود به سيستم
برترین مطالب
سايت هاي مرتبط
فیدبرنر
اطلاعات سایت
بازدید های امروز : 201 مرتبه
بازدید های دیروز : 1084 مرتبه
مجموع بازدید ها : 1637611 مرتبه
کاربران حاضر : 6 نفر
بیشترین بازدید همزمان : 9 نفر
بازدید های دیروز : 1084 مرتبه
مجموع بازدید ها : 1637611 مرتبه
کاربران حاضر : 6 نفر
بیشترین بازدید همزمان : 9 نفر
| برترین نویسندگان: | |||
| 1 | admin | 190 | |
| 2 | samaee | 23 | |
| 3 | khosravi | 15 | |
| 4 | zaman | 13 | |
| 5 | Gabriel | 10 | |
| 6 | nasab | 8 | |
| 7 | mahdinet | 7 | |
| 8 | marahimi | 4 | |
| 9 | snekooei | 4 | |
| 10 | sadegh98 | 3 | |
مطالب سایت: |
| امروز: 0 |
| این ماه: 0 |
| در کل: 288 |
| کاربران: |
| عضویت های امروز: 0 |
| این ماه: 0 |
| کل کاربران: 1600 |




#1 توسط: پيمان
1 آذر 1386 11:46
بازهم ممن?ن