آموزش كاربردي جي آي اس 10 و اتوكد در علوم مهندسي (GIS10) شماره 5
آموزش كاربردي جي آي اس 10 و اتوكد در علوم مهندسي (GIS10) شماره 5
موضوع: تبديل خط سه بعدي به دو بعدي در اتوكد (Converting 3D polyline to polyline)
گاهي مواقع كاربران علوم مهندسي نياز به اين پيدا مي كنند تا خطوط سه بعدي (3D polyline) را جهت انجام عمليات ويرايشي همچون اتصال خطوط به هم (كه در حالت سه بعدي انجام نمي شود) تبديل به خطوط دوبعدي (polyline or 2D polyline) نمايند. اين مشكل بخصوص زماني است كه شما خطوطي را در گوگل ارث (Google Earth) در وضعيت سه بعدي ترسيم نموده ايد و وقتي به محيط اتوكد منتقل مي كنيد به شكل خط سه بعدي خواهد بود و مي خواهيد آن را به polyline تبديل نمائيد تا بتوانيد عمليات ويرايشي را بر روي آن (اتصال خطوط، هاشور زدن محيط داخل، ...) انجام دهيد.
1- ابتدا كد زير را در محيط notepad كپي كنيد.
2- فايل را با فرمت *.LSP ذخيره نمائيد.
3- حال در محيط اتوكد اين فايل را فراخواني كنيد از مسير زير :
Tools> Load Application> select your file in AutoCAD with classical menu
Manage>Applications>Load Application in AutoCAD with new Toolbars
4- حال با تايپ دستور d32 و انتخاب خط مورد نظر از حالت 3dpolyline به polyline تبديل مي شود.
موفق باشيد....
(defun c:d32 ()
(command "OSNAP" "off")
(setq i 0)
(setq a (ssget))
(repeat (sslength a)
(setq lib '())
(setq lib_f '())
(setq b (ssname a i))
(if (= "POLYLINE" (cdr (assoc 0 (entget b))))
(progn
(setq enp (entget b))
(setq en3 (cdr (setq en2 (assoc -1 enp))))
(while (/= (setq ent (cdr (assoc 0 enp))) "SEQEND")
(if (= ent "VERTEX")
(setq lib (append lib (list (cdr (assoc 10 enp)))))
)
(setq enp (entget (setq en3 (entnext en3))))
)
(setq lib_f (append lib_f lib))
(setq pt1 (list (car (nth 0 lib_f)) (cadr (nth 0 lib_f)) 0))
(command "pline" pt1)
(setq j 1)
(while (nth j lib_f)
(setq pt2 (list (car (nth j lib_f)) (cadr (nth j lib_f)) 0))
(command pt2)
(setq pt1 pt2)
(setq j (+ j 1))
)
(command "")
)
)
(if (= "LWPOLYLINE" (cdr (assoc 0 (entget b))))
(progn
(setq enp (entget b))
(repeat (cdr (assoc 90 (entget b)))
(setq fi_p1 (assoc 10 enp))
(setq fi_p (cdr fi_p1))
(setq lib_f (append lib_f (list fi_p)))
(setq enp (subst '(777 . "bhut") fi_p1 enp))
)
(setq pt1 (list (car (nth 0 lib_f)) (cadr (nth 0 lib_f)) 0))
(command "pline" pt1)
(setq j 1)
(while (nth j lib_f)
(setq pt2 (list (car (nth j lib_f)) (cadr (nth j lib_f)) 0))
(command pt2)
(setq pt1 pt2)
(setq j (+ j 1))
)
(command "")
)
)
(if (= "LINE" (cdr (assoc 0 (entget b))))
(progn
(setq st_pt (list (car (cdr (assoc 10 (entget b))))
(cadr (cdr (assoc 10 (entget b))))
)
)
(setq end_pt (list (car (cdr (assoc 11 (entget b))))
(cadr (cdr (assoc 11 (entget b))))
)
)
(command "LINE" st_pt end_pt "")
)
)
(setq i (1+ i))
)
(command "erase" a "")
(command "OSNAP" "midp,endp,center,perpendicular,nearest")
)
کانال تلگرامی بوک تیپس، کانالی با موضوع کتاب، مطالعه، جملات اخلاقی و تربیتی، سخنان بزرگان.