دستورات ترسیمی هندسی

برای ترسیم در اتوکد علاوه بر دانش در مورد دستورات آن باید با هندسه ی تحلیلی نیز آشنا باشید . برنامه های شما از طریق فرمول های هندسه ی تحلیلی است که مفهوم پیدا می کنند. در اصل ترسیم شامل پیدا کردن نقاط مورد نظر و سپس برقرار کردن رابطه بین آنها از طریق خط ، کمان و... است.
اولین دستور که بیشترین کاربرد را در ترسیم دارد polar  است. کار این دستور پیدا کردن نقطه بر اساس مختصات قطبی نسبی است.

Command: (polar '(0 0 0) pi 100)
(-100.0 1.22461e-014 0.0)

این دستور از سه آرگومان تشکیل شده است. (به سه مقدار ورودی احتیاج دارد) اولین آرگومان نقطه ی مبدا است که می خواهیم مرکز مختصات قطبی جاری در نظر گرفته شود. دومین آرگومان زاویه ی مورد نظر شما در مختصات قطبی (بر حسب رادیان) و سومین آرگومان طول یا اندازه ی فاصله ی آن نقطه از مبدا است.اگر مختصات قطبی را فراموش کرده اید یا با آن آشنا نیستید به کتابهای ریاضی مراجعه کنید.

در این دستور از عبارت pi استفاده شده است که معادل رقم پی در 3.1415  است و در اتولیسپ به صورت پیشفرض تعریف شده است. بهتر است همیشه از این عبارت برای معادل سازی سایر زوایا استفاده کنید. مثلا بجای 30 درجه از pi/6 استفاده کنید.

Command: (polar '(0 0 0) (/ pi 6) 100)
(86.6025 50.0 0.0)

خروجی دستور polar یک نقطه است.که بر مبنای مختصات قطبی داده شده به آن محاسبه می شود.
دستور بعدی distance است که با گرفتن مختصات دو نقطه فاصله ی بین آنها را محاسبه می کند.

Command: (distance '(0 0 0) '(4 3 0))
5.0

دستور بعدی inters است که با گرفتن چهار نقطه که دو به دو معرف دو خط هستند نقطه ی تقاطع آنها را بدست میدهد. ممکن است دو خط تقاطع نداشته باشند که در این صورت موازی در نظر گرفته می شوند.

Command: (inters '(0 0 0) '(10 10 0) '(0 4 0) '(4 0 0))
(2.0 2.0 0.0)

حالتی هم وجود دارد که دو خط همدیگر را اصلا قطع نکنند. در این  صورت خروجی nil داده می شود.

دقت کنید دستورات معرفی شده کارشان ترسیم نیست. اما برای پیدا کردن نقاطی که میخواهید بر مبنای آنها ترسیم انجام دهید مورد استفاده قرار می گیرند.

برنامه ی نمونه : اندازه گذاری خودکار روی یک خط

(defun c:drawlength(/)

  (setq line1 (entget (car (entsel "Pick a line :"))))
  (setq startPoint (cdr (assoc 10 line1)))
  (setq endPoint   (cdr (assoc 11 line1)))

  (command  "_dimaligned" startPoint endPoint startpoint )

  )