美文网首页
用Autolisp和Excel绘制圆法兰

用Autolisp和Excel绘制圆法兰

作者: 怪怪001 | 来源:发表于2019-12-05 07:43 被阅读0次

当我们在设计管道时,需要绘制圆法兰。我们需要翻出公司的标准图集,然后根据标准图集绘制。现在我们运用Autolisp和Excel解决这个问题。

步骤一:用户输入

1. 获取管道直径

2. 获取圆法兰的视图方向

3. 获取圆法兰的中心点位置

(initget "DN80 DN100 DN125 DN150 DN200 DN250 DN300 DN350 DN400 DN450 DN500 DN550 DN600 DN650 DN700 DN750 DN800 DN850 DN900 DN950 DN1000")

(setq size (getkword "\nEnter Flange Size: <DN80>"))

(initget "F R FR")

(setq view (getkword "\nEnter view orient:<F> or <R> or <FR>"))

(setq pt1 (getpoint "\nEnter center point of the flange: "))

(if (= size nil) (setq size "DN80"))

(if (= view nil) (setq view "F"))

(setq size (strcase size))

(setq view (strcase view))

步骤二:数据获取

1. 根据管径从Excel表格中获得圆法兰对应的内孔、中心孔、外圆和开孔数量

;*****************导入Excel应用程序资源***********************************************

(defun jinn-get-excel-Lib()

  (setq exlib "C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\EXCEL.EXE")

  (if exlib

    (vlax-import-type-library 

    :tlb-filename exlib

    :methods-prefix "MX-"

    :properties-prefix "MX-"

    :constants-prefix "MX-"

    )

  )

)

;*****************打开Excel文件************************************

(defun OpenExcelFile(filename)

  (setq XLobj (vlax-get-or-create-object "Excel.Application"))

  (if (null XLobj) (vl-exit-with-error (princ "\nExcel start fail.")))

  (vla-put-visible XLobj 1)

  (setq wbs (vlax-get-property XLobj "WorkBooks"))

  (setq wb (vlax-invoke-method wbs "open" filename))

  (if (null wb) (vl-exit-with-error (princ "\nFile is not exist.")))

)

;***************激活工作表******************************************

(defun ActivateSheetName(sheetname)

  (setq shs (vlax-get-property wb "Sheets"))

  (setq shtCircleFlange (vlax-get-property shs "Item" sheetname))

  (vlax-invoke-method shtCircleFlange "Activate")

)

;****************取得指定的单元格对象*******************************

(defun Get_XL_Cell(wkst row col)

  (vlax-variant-value (MX-Get-Item (MX-Get-Cells wkst) row col))

)

;****************读取单元格数据************************************

(defun Get_XL_Cell_value(wkst row col)

  (vlax-variant-value (MX-get-value (Get_XL_Cell wkst row col)))

)

;***************写入单元格数据*************************************

(defun Put_XL_Cell_value(wkst row col strValue)

  (vlax-put-property (Get_XL_Cell wkst row col) "Value2" strValue)

)

;*************** 根据管径从Excel表格中获得圆法兰对应的内孔、中心孔、外圆和开孔数量

(defun xl-circleFlange(size view)

  (vl-load-com)

  (setq filename "D:\\Autocad\\StandardPart.xlsx")

  (if (null MX-acos) (jinn-get-excel-Lib))

  (OpenExcelFile filename)

  (ActivateSheetName "CircleFlange")

  (setq row1 2)

  (repeat 21

    ;(princ row1)

    (setq strSize (Get_XL_Cell_value shtCircleFlange row1 1))

    ;(princ strSize)

    ;(princ "\n")

    (if (= size (Get_XL_Cell_value shtCircleFlange row1 1))

      (progn

        (setq id (Get_XL_Cell_value shtCircleFlange row1 2))

        (setq cd (Get_XL_Cell_value shtCircleFlange row1 3))

        (setq od (Get_XL_Cell_value shtCircleFlange row1 4))

        (setq hQty (Get_XL_Cell_value shtCircleFlange row1 5))

        (if (= view "F") (Flange_Front id cd od hQty))

        (if (= view "R") (Flange_Right id cd od))

        (if (= view "FR") (Flange id cd od hQty))        

        ;(exit)

      )      

    )

    (setq row1 (+ row1 1))

  )

  (vlax-invoke-method wbs "close")

  (prin1)

)

步骤三:绘制图形

1.根据视图方向和中心点的位置绘制图形

;法兰主视图绘制程序

;id-内圆直径

;od-外圆直径

;cd-中心圆直径

;hQty-法兰开孔数量

(defun Flange_Front(id cd od hQty)

  (setq pt2 (polar pt1 0 (* (/ od 2.0) 1.05)))

  (setq pt3 (polar pt1 pi (* (/ od 2.0) 1.05)))

  (setq pt4 (polar pt1 (/ pi 2) (* (/ od 2.0) 1.05)))

  (setq pt5 (polar pt1 (* pi 1.5) (* (/ od 2.0) 1.05)))

  (setq pt6 (polar pt1 (/ pi hQty) (/ cd 2.0)))

  (setq pt7 (polar pt6 (/ pi hQty) 10))

  (setq pt8 (polar pt6 (+ (/ pi hQty) pi) 10))

  (setq pt9 (polar pt6 (+ (/ pi hQty) (* pi 0.5)) 10))

  (setq pt10 (polar pt6 (+ (/ pi hQty) (* pi 1.5)) 10))

  (command "-amlayer" "O" "CON1")

  (command "Circle" pt1 (/ id 2.0))

  (command "Circle" pt1 (/ od 2.0))

  (command "Circle" pt6 7)

  (setq en1 (entlast))

  (command "-amlayer" "O" "CENW")

  (command "Circle" pt1 (/ cd 2.0))

  (command "Line" pt2 pt3 "")

  (command "Line" pt4 pt5 "")

  (command "Line" pt7 pt8 "")

  (setq en2 (entlast))

  (command "Line" pt9 pt10 "")

  (setq en3 (entlast))

  (command "-array" en1 en2 en3 "" "p" pt1 hQty 360 "y")

  (PRINC)

)

;法兰右视图绘制程序

(defun Flange_Right(id cd od)

  (setq pt2 (polar pt1 0 (* (/ od 2) 1.5)))

  (setq pt3 (polar pt2 (/ pi 2) (/ od 2.0)))

  (setq pt4 (polar pt3 0 8))

  (setq pt5 (polar pt4 (* pi 1.5) od))

  (setq pt6 (polar pt5 pi 8))

  (setq pt7 (polar pt2 pi 3))

  (setq pt8 (polar pt2 0 11))

  (setq pt9 (polar pt2 (/ pi 2) (/ id 2.0)))

  (setq pt10 (polar pt9 0 8))

  (setq pt11 (polar pt2 (* pi 1.5) (/ id 2.0)))

  (setq pt12 (polar pt11 0 8))

  (setq pt13 (polar pt2 (/ pi 2) (/ cd 2.0)))

  (setq pt14 (polar pt13 pi 3))

  (setq pt15 (polar pt13 0 11))

  (setq pt16 (polar pt2 (* pi 1.5) (/ cd 2.0)))

  (setq pt17 (polar pt16 pi 3))

  (setq pt18 (polar pt16 0 11))

  (command "-amlayer" "O" "CON1")

  (command "PLine" pt3 pt4 pt5 pt6 pt3 "")

  (command "-amlayer" "O" "HIDW")

  (command "Line" pt9 pt10 "")

  (command "Line" pt11 pt12 "")

  (command "-amlayer" "O" "CENW")

  (command "Line" pt7 pt8 "")

  (command "Line" pt14 pt15 "")

  (command "Line" pt17 pt18 "")

)

;法兰绘制主视图和右视图程序

(defun Flange(id cd od hQty)

  (Flange_Front id cd od hQty)

  (Flange_Right id cd od)

)

把上面所有的代码合在一起形成一个lsp文件,用cad加载就可以使用。

如有问题,请在下面的评论区告诉我。

相关文章

  • 用Autolisp和Excel绘制圆法兰

    当我们在设计管道时,需要绘制圆法兰。我们需要翻出公司的标准图集,然后根据标准图集绘制。现在我们运用Autolisp...

  • AutoLisp学习与自己第一个小程序

    其实自己很早以前就想学习AutoLisp了。因为众所周知,要想高效利用Excel必须学VBA,那么高效利用Auto...

  • AutoLisp学习笔记:数据类型

    摘录一段AutoLisp 和Visual Lisp的介绍 AutoLISP是为二次开发AutoCAD而专门设计的编...

  • 使用canvas绘制圆形进度条

    实现步骤: 绘制一个圆; 绘制圆环; 绘制进度环; 绘制文字; 一、创建画布 二、绘制一个圆 三、绘制圆环: 四、...

  • Excel是一个集数据处理和图表绘制于一身的优秀软件。运用Excel的“图表向导”来绘制图表也不算麻烦。但是,如果...

  • HTML5绘制

    一、绘制矩形 二、圆的绘制

  • 如何在迅捷CAD编辑器中绘制一份表格?

    怎么在CAD编辑器中绘制一份完整的的表格?这个问题,大家肯定会想到绘制表格,肯定是用Excel表格绘制更加简单啊,...

  • linGdx绘制圆

    绘制方式一: 效果 绘制方式二 圆 绘制方式三

  • canvas绘制弧线和圆

    上一节,我们学习了如何使用绘制线条及多边形的方式来绘制七巧板,这一节,我们学习如何绘制弧线和圆。同样,html文件...

  • patchwork--快速掌握科研论文图片排版

    在发表论文时候,经常会看到高大上的图片排列及绘制。通常我们用软件(spss+excel等)绘制好图片,都是单个fi...

网友评论

      本文标题:用Autolisp和Excel绘制圆法兰

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