Gu_xl 发表于 2011-5-20 15:45:42

【Gu_xl】DWG图形到DCL IMAGE图像描点程序应用源码示例

本帖最后由 Gu_xl 于 2013-6-11 10:43 编辑

DWG到IMAGE图像描点程序有很多人研究过,但没有人公布全部源码!
我将我写的描点程序源码公布出来,供大家学习研究!









http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 Gu_xl的微博

自贡黄明儒 发表于 2012-7-16 16:35:58

G版呀!你能不能举个应用示例。看到你这个程序,觉得是个好东西,可以用来做界面,就是悟不透呀。你就好事做到底,送佛送到西,举个应用示例嘛。

尘缘一生 发表于 2020-2-16 02:53:27

自贡黄明儒 发表于 2012-7-16 18:27
;;; (startapp "notepad.exe" filename)前面的;去掉
;;Result Wpixel cols Hpixel rows都需要以常量的方 ...



本帖相信没几个人搞的懂,你得程序有这些东西?解释下道理吧?

既然发这个了,大家都不知道怎么用,还有什么意思。

maxli 发表于 2018-11-4 12:18:50

egos 发表于 2011-5-20 17:49
http://web2.airmail.net/terrycad网站的 GetVectors.lsp这个不错能同时生成DCL文件和lsp文件

可以把源码发上来么?我找 了半天没有看到你说的那个程序

xshrimp 发表于 2011-5-20 16:50:34

本帖最后由 xshrimp 于 2011-5-20 16:52 编辑

以前我也写过.现在找不到了.
有好多公布过源码啊.
http://web2.airmail.net/terrycad网站的 GetVectors.lsp
还有下面的不知道谁写的了.
(defun c:Mimage2 (/ BackGround Colors DclFile DclList Dist DxfData Entity Height HeightY Inside LastEntity Line LowerRight LspFile LspList Number Objects Pt SaveOsmode UpperLeft Width WidthX WmfFile X X1s X2s XY Y Y1s Y2s)
(princ "\nMimage makes an image file for a dialog image tile.") (setvar "cmdecho" 0) (redraw)
(setq UpperLeft (nth 0 (ViewPoints)) LowerRight (nth 1 (ViewPoints)) Width (nth 2 (ViewPoints)) Height (nth 3 (ViewPoints)))
(if (not *X) (setq *X (fix (+ 0.5 (* 100 (/ Width (float Height)))))))
(if (not *Y) (setq *Y 100))
(if (not (setq X (getint (strcat "\nEnter dimx_tile value <" (itoa *X) ">: ")))) (setq X *X))
(if (not (setq Y (getint (strcat "\nEnter dimy_tile value <" (itoa *Y) ">: ")))) (setq Y *Y))
(if (or (< X 2) (< Y 2))
    (progn (princ "\nThe dimx_tile and dimy_tile values must be greater than 1.") (exit))
    (setq *X X *Y Y)
)
(if (< (/ X (float Y)) (/ Width Height))
    (setq Dist (* Height (/ X (float Y))) Pt (list (+ (car UpperLeft) Dist) (cadr LowerRight)))
    (setq Dist (* Width (/ Y (float X))) Pt (list (car LowerRight) (- (cadr UpperLeft) Dist)))
)
(grdraw UpperLeft (list (car UpperLeft) (cadr Pt)) 1) (grdraw (list (car UpperLeft) (cadr Pt)) Pt 1)
(grdraw Pt (list (car Pt) (cadr UpperLeft)) 1) (grdraw (list (car Pt) (cadr UpperLeft)) UpperLeft 1)
(initget "Yes No") (setq Inside (getkword "\nAre the image objects inside the red outline? <Y>: "))
(if (= Inside "No") (progn (princ "\nPan or zoom as required, then run the program again.") (exit)))
(initget "Yes No") (setq BackGround (getkword "\nDo you want an image background? <Y>: "))
(setq BackGround (if (= BackGround "No") "    color = -15;" "    color = -2;"))
(princ "\nCreating image file...") (princ)
(if (setq Objects (ssget "c" UpperLeft Pt))
    (progn
      (setq WmfFile (vl-filename-mktemp "Temp.wmf") XY (list X (* Y -1)))
      (command "wmfout" WmfFile Objects "" "undo" "begin" "zoom" "0,0" XY)
      (setq LastEntity (entlast) SaveOsmode (getvar "osmode")) (setvar "osmode" 0)
      (command "wmfin" WmfFile "0,0" 2 2 0) (setvar "osmode" SaveOsmode)
      (setq Entity (entlast)) (command "explode" Entity)
      (while (setq Entity (entnext Entity))
      (if (= (cdr (assoc 0 (entget Entity))) "POLYLINE") (command "explode" Entity))
      )
      (setq Entity LastEntity)
      (while (setq Entity (entnext Entity))
      (setq DxfData (entget Entity))
      (if (= (cdr (assoc 0 DxfData)) "LINE")
          (progn
            (setq X1s (append X1s (list (fix (cadr (assoc 10 DxfData))))))
            (setq Y1s (append Y1s (list (fix (abs (caddr (assoc 10 DxfData)))))))
            (setq X2s (append X2s (list (fix (cadr (assoc 11 DxfData))))))
            (setq Y2s (append Y2s (list (fix (abs (caddr (assoc 11 DxfData)))))))
            (setq Colors (append Colors (list (cdr (assoc 62 DxfData)))))
          )
      )
      )
      (command "undo" "end" "undo" 1)
    )
)
(setq WidthX (rtos (+ (* (1- X) (/ 1 6.0)) 0.09) 2 2) HeightY (rtos (+ (* (1- Y) (/ 1 13.0)) 0.048) 2 2))
(setq DclList (list "Vimage : dialog {" "label = \"Vimage Preview\"; spacer;" ": image {" "    key = \"image1\";" "    alignment = centered;" (strcat "    width = " WidthX ";") "    fixed_width = true;" (strcat "    height = " HeightY ";") "    fixed_height = true;" BackGround "}" "ok_only;" "}"))
(setq DclFile (open (strcat *VimageFolder "Vimage.dcl") "w"))
(foreach Line DclList (write-line Line DclFile)) (close DclFile)
(setq LspList (list "(defun Vimage (/ DclID)" "(setq DclID (load_dialog (strcat *VimageFolder \"Vimage.dcl\")))" "(new_dialog \"Vimage\" DclID)" "(image1)" "(princ (strcat \"\\ndimx_tile = \" (itoa (dimx_tile \"image1\")) \", dimy_tile = \" (itoa (dimy_tile \"image1\")))) (princ)" "(start_dialog)" "(unload_dialog DclID)" "(princ)" ")" "(defun image1 ()" "(start_image \"image1\")"))
(if Objects
    (progn
      (setq LspList (append LspList (list "(mapcar 'vector_image")))
      (setq Line "    (list") (foreach Number X1s (setq Line (strcat Line " " (Align Number)))) (setq Line (strcat Line ")"))
      (setq LspList (append LspList (list Line)))
      (setq Line "    (list") (foreach Number Y1s (setq Line (strcat Line " " (Align Number)))) (setq Line (strcat Line ")"))
      (setq LspList (append LspList (list Line)))
      (setq Line "    (list") (foreach Number X2s (setq Line (strcat Line " " (Align Number)))) (setq Line (strcat Line ")"))
      (setq LspList (append LspList (list Line)))
      (setq Line "    (list") (foreach Number Y2s (setq Line (strcat Line " " (Align Number)))) (setq Line (strcat Line ")"))
      (setq LspList (append LspList (list Line)))
      (setq Line "    (list") (foreach Number Colors (setq Line (strcat Line " " (Align Number)))) (setq Line (strcat Line ")"))
      (setq LspList (append LspList (list Line ")")))
    )
)
(setq LspList (append LspList (list "(end_image)" ")")))
(setq LspFile (open (strcat *VimageFolder "Vimage.lsp") "w"))
(foreach Line LspList (write-line Line LspFile)) (close LspFile)
(princ " Complete!")
(c:Vimage)
(princ)
)
(defun c:Vimage ()
(if (and (findfile (strcat *VimageFolder "Vimage.lsp")) (findfile (strcat *VimageFolder "Vimage.dcl")))
    (progn (load (strcat *VimageFolder "Vimage.lsp")) (Vimage))
    (princ (strcat "\nRun Mimage first to create the " *VimageFolder "Vimage.lsp file."))
)
(princ)
)
(defun Align (Number)
(cond
    ((< Number 10) (strcat "" (itoa Number)))
    ((< Number 100) (strcat " " (itoa Number)))
    ((itoa Number))
)
)
(defun ViewPoints (/ Center Height LowerRight UpperLeft Width)
(setq Height (getvar "viewsize"))
(setq Width (* Height (/ (car (getvar "screensize")) (cadr (getvar "screensize")))))
(setq Center (trans (getvar "viewctr") 1 2))
(setq UpperLeft (trans (list (- (car Center) (/ Width 2.0)) (+ (cadr Center) (/ Height 2.0))) 2 1))
(setq LowerRight (list (+ (car UpperLeft) Width) (- (cadr UpperLeft) Height)))
(list UpperLeft LowerRight Width Height)
)
(setq *X nil *Y nil *VimageFolder "C:\\Temp\\")
(if (not (findfile (strcat *VimageFolder "Vimage.dcl"))) (vl-mkdir *VimageFolder))
(princ "\nType Mimage2 to make image file or type Vimage to view image.")

duotu007 发表于 2011-5-20 17:22:29

选择对象:
图像范围左下角坐标:
图像范围右上角坐标:
图像像素高为<220>:
图像宽高比率<0.667>:
图像按钮行数<5>:
图像按钮列数<8>:; 错误: no function definition: >*>

出错了

egos 发表于 2011-5-20 17:49:51

http://web2.airmail.net/terrycad网站的 GetVectors.lsp这个不错能同时生成DCL文件和lsp文件

zhongys 发表于 2011-5-20 20:19:36

Gu_xl 发表于 2011-5-21 10:13:02

回复 duotu007 的帖子

已更新,请重新下载!

egos 发表于 2011-5-21 10:55:38

本帖最后由 egos 于 2015-5-8 13:01 编辑

问一下楼主那些貌似位图的图像按钮是怎么描点实现的?

zxmmelly 发表于 2011-5-21 11:21:55

null

学院派的那个就不错

timmy521 发表于 2011-5-21 19:01:44

好东西啊,要好好学习了啊,

timmy521 发表于 2011-5-21 19:12:40

这个具体怎么用啊,现在还有点不太明白 。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【Gu_xl】DWG图形到DCL IMAGE图像描点程序应用源码示例