美文网首页autolisp&visuallisp
AutoLisp入门基础教程(4)

AutoLisp入门基础教程(4)

作者: 吴吉光 | 来源:发表于2018-07-11 19:08 被阅读0次

这个程序的目的是在平面上画出矩形区域,并将这些矩形的位置和大小写在文件里。

(defun c:tt()
    ;
    (setq all_data '())
    ; Define the original point
    (setq pt0 nil)
    (while (not pt0)
        (setq pt0 (getpoint "\n Define the original point"))
    )
    ; Define the two corners of rectangle
    (setq pt1 (getpoint "\nThe first corner of rectangle"))
    (if (not pt1)
        ; when pt1 is not available
        (setQ pt2 nil)      
        ; when pt1 is available
        (setq pt2 (getcorner pt1 "\nThe other corner of rectangle"))
    )
    (setq num 0)
    ; save the osmode
    (setq oldsanp (getvar "osmode"))
    (while (and pt1 pt2)
        ;set osmode = 0 for accurate plot
        (setvar "osmode" 0)
        ; Plot rectangle
        (command "rectang" pt1 pt2)
        (setq pc (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2)))
        ; Plot circle 
        (command "circle" pc 800)
        ; Marked with NO.
        (setq num (1+ num))
        (command "text" "m" pc 800 0 (itoa num))
        ; reset the osmode
        (setvar "osmode" oldsanp)
        ; Define coordinate of the rectangle center: pcx, pcy
        (setq pcx (- (/ (+ (car pt1) (car pt2)) 2) (car pt0))
              pcy (- (/ (+ (cadr pt1) (cadr pt2)) 2) (cadr pt0))
        )
        ; Define the X or Y ranges of the rectangle: dx, dy
        (setq dx (abs (- (car pt1) (car pt2)))
              dy (abs (- (cadr pt1) (cadr pt2)))
        )
        (prin1)
        ; Store information in all_data
        (setq all_data (cons (list pcx pcy dx dy) all_data))
        ; Define the two corners of rectangle
        (setq pt1 (getpoint "\nThe first corner of rectangle"))
        (if (not pt1)
            ; when pt1 is not available
            (setq pt2 nil)      
            ; when pt1 is available
            (setq pt2 (getcorner pt1 "\nThe other corner of rectangle"))
        )
        (prin1)
    )
    ; Reverse the list
    (setq all_data (reverse all_data))
    ; write file 
    (setq dat_file (getfiled "Save file as" "C:\\tempfile" "csv" 1))
    (setq fo (open dat_file "w"))
    (write-line "NO., pcx, pcy, dx, dy" fo)
    ; element index start from 0
    (setq n (length all_data)
          i 0
    )
    (repeat n
        (setq data (nth i all_data))
        (write-line (strcat (itoa (1+ i)) ", "
                       (rtos (/ (nth 0 data) 1000) 2 3) ", "
                       (rtos (/ (nth 1 data) 1000) 2 3) ", "
                       (rtos (/ (nth 2 data) 1000) 2 3) ", "
                       (rtos (/ (nth 3 data) 1000) 2 3)
                )
                fo
         )
        (setq i (1+ i))
    )
    (close fo)
    (princ (strcat "\nWrite file:" dat_file))
    (prin1)
)
(princ "Shortcut: TT")

相关文章

  • AutoLisp入门基础教程(4)

    这个程序的目的是在平面上画出矩形区域,并将这些矩形的位置和大小写在文件里。

  • AutoLisp入门基础教程(3)

    这是AutoLisp入门教程的第三部分,在教程的第二部分,我们编写了一个绘制瓦楞板多段线的小程序。这个Autoli...

  • AutoLisp入门基础教程(1)

    本教程是AutoLisp编程语言的入门指南。说是入门指南,其实不过是集合了我学习过程中的一些摘抄、笔记和自己的一些...

  • AutoLisp入门基础教程(2)

    这是AutoLisp入门基础教程的第二部分。在教程的第一部分,我们掌握了如何在AutoCAD中加载一个AutoLi...

  • AE特效入门教程及案例教学

    入门教程 AE特效基础教程第1集:工作界面简介AE特效基础教程第2集:项目面板AE特效基础教程第3-4集:合成面板...

  • 单反摄影入门基础教程

    1、单反摄影入门基础教程(1)——器材选购 2、单反摄影入门基础教程(2)——光圈,快门与感光度 3、单反摄影入门...

  • 新手入门!给零基础小白专门打造的色彩基础教程

    新手入门!给零基础小白专门打造的色彩基础教程 新手入门!给零基础小白专门打造的色彩基础教程

  • Java学习入门基础推荐

    给你推荐一个写得非常用心的Java基础教程:Java入门基础教程 | 天码营 这个教程将Java的入门基础知识贯穿...

  • Docker 基本用法

    Docker 参考 极客学院Wiki:Docker入门基础教程 Gitbook:Docker —— 从入门到实践 ...

  • Python基础教程

    Python基础教程1 Hello Python基础教程1 Hello python 3.7极速入门教程1安装:L...

网友评论

    本文标题:AutoLisp入门基础教程(4)

    本文链接:https://www.haomeiwen.com/subject/lwnffftx.html