明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3003|回复: 20

求助选线,文字问题

  [复制链接]
发表于 2004-6-30 19:09:00 | 显示全部楼层 |阅读模式
请问如何通过点选,将图中某个PL线顶点的坐标算出,并自动将X,Y坐标值分别旋转90度显示在指定位置上.


如某点(1452,4572)的X,Y值分别旋转90度显示在(1100.4000),(13000,4000)上.


主要是通过点选PL线可以实现.


小弟急需,请各位大侠帮助.
发表于 2004-6-30 19:10:00 | 显示全部楼层
求程序还是求方法?
 楼主| 发表于 2004-7-1 16:08:00 | 显示全部楼层
方法程序都可以.        有程序当然最好了.


帮帮忙了,谢谢.
 楼主| 发表于 2004-7-1 16:56:00 | 显示全部楼层
选择PL线后实现如图,请飞哥帮忙过这一关.能实现主要的就可以了.



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-7-1 17:44:00 | 显示全部楼层
你在那个EXCEL里的请求,我已经把新改的程序写上了啊,,,,你没看吗?(就是加了写这些文字)
 楼主| 发表于 2004-7-1 18:38:00 | 显示全部楼层
看了,很好用,


但是问题的哪个人不是我啊,不过还是学到了不少.


我这个问题跟读取EXCEL无关,主要是选定任意PL线然后实现文字,就是4楼图上的样子.呵呵,虽然简单,但我总做不好,麻烦你了。
发表于 2004-7-1 19:17:00 | 显示全部楼层
我给你的问题的程序也写好了的,怎么没有放上去?再贴一次,你好好看看,这里也有写文字的部分
  1. (defun main( / filename sheet zin)
  2.    (setq zin (getvar "dimzin"))
  3.    (setvar "dimzin" 1)
  4.    (setq filename (getfiled "打开存放数据的Excel电子表格文档" "e:\\wjh\\study\\autolisp\\nodbird\" "XLS" 8))
  5.    (if filename
  6.        (progn
  7.            (setq appsession (Exl-Open filename "SHOW"))
  8.            (setq sheet (vlax-get-property appsession 'ActiveSheet))
  9.            (SETQ A (GetRange sheet "B5" "C20"))
  10.            (Exl-quit appsession)
  11.            (setq a (mapcar '(lambda(e) (if (not (vl-every 'null e)) e)) A))
  12.            (setq a (vl-remove nil a))
  13.            (draw a)
  14.            
  15.        )
  16.    )   
  17.    (setvar "dimzin" zin)
  18.    (princ)
  19. )
 楼主| 发表于 2004-7-1 22:29:00 | 显示全部楼层
不行啊,执行加载EXCEL后,会提示错误: no function definition: EXL-OPEN,


另外单元格的行我可以任意修改吗.
 楼主| 发表于 2004-7-1 22:46:00 | 显示全部楼层
飞哥,你前面在<EXCEL和CAD>中发的两个程序都跟你7楼的程序不完全一样,而且第一个执行会出错,你给我修改的哪个是在几楼啊?
发表于 2004-7-1 23:22:00 | 显示全部楼层
晕,怎么又只贴了一半???
  1. ;根据起始单元和水平垂直移动单元数目,算出下一单元(vl-load-com)
  2. (defun CalCell(Cell nRow nCol / i n h str sRow sCol sum pos)
  3.    (setq sRow nil sCol "" sum 0 h nil pos nil)
  4.    (setq i 1)   
  5.    (repeat (strlen Cell)
  6.        (setq str (substr Cell i 1))
  7.        (if (/= (type (read str)) 'INT)
  8.            (setq sRow (append sRow (list str)))
  9.            (setq sCol (strcat sCol str))
  10.        )
  11.        (setq i (1+ i))
  12.    )
  13.    (setq sRow (mapcar '(lambda(e) (- (ascii (strcase e)) 64)) sRow))
  14.    (setq n (length sRow) i n sum 0)
  15.    (repeat n
  16.        (setq sum (+ sum (* (nth (1- i) sRow) (expt 26 (- n i)))))
  17.        (setq i (1- i))
  18.    )
  19.    (setq sum (+ sum nCol))
  20.    (setq pos nil)
  21.    (while (> (setq n (/ sum 26)) 0)
  22.        (setq h n)
  23.        (setq sum (- sum (* 26 (/ sum 26))))
  24.        (setq pos (cons sum pos ))
  25.    )
  26.    (if h
  27.        (setq pos (cons h pos))
  28.        (setq pos (cons sum pos ))
  29.    )
  30.    (strcat (apply 'strcat (mapcar '(lambda(e) (chr (+ e 64))) pos))
  31.      (itoa (+ (atoi sCol) nRow)))
  32. );函数(GetRange sheet sCELL nRow),读取范围,用法:
  33. ;参数说明:
  34. ;sheet—— excel的sheet对象
  35. ;sCELL——起始单元
  36. ;eCELL——结束单元
  37. ;如:(GetRang sheet "A1" "C10");表示从"A1"到"C10"之间所有范围
  38. (defun GetRange(sheet sCELL eCELL / val items )
  39.    (setq val (vlax-get-property sheet 'range sCELL eCELL))
  40.    (setq val (vlax-variant-value (vlax-get-property val 'value)))
  41.    (if (/= (type val) 'REAL)
  42.        (progn
  43.            (setq items (vlax-safearray->list val))
  44.            (setq items (mapcar '(lambda(e) (mapcar 'vlax-variant-value e)) items))
  45.        )
  46.        (setq items val)
  47.    )
  48. )
  49. (defun MakeText(pt h str / dxf)
  50.    (setq dxf (list '(0 . "TEXT") '(100 . "AcDbEntity") '(67 . 0) '(100 . "AcDbText")
  51.        (cons 10 pt)
  52.        (cons 40 h)
  53.        (cons 1 str)
  54.        (cons 50 (/ pi 2)) '(41 . 1.0) '(51 . 0.0) '(71 . 0)
  55.              '(72 . 2) (cons 11 pt) '(210 0.0 0.0 1.0) '(100 . "AcDbText") '(73 . 0)))
  56.    (entmake dxf)
  57. )
  58. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  59. (defun Exl-Open (filename dmode / appsession)
  60.    (princ "\n创建一个新的 Excel 电子表格文件...")
  61.    (cond
  62.        ((setq appsession (vlax-create-object "Excel.Application"))
  63.          (vlax-invoke-method (vlax-get-property appsession 'WorkBooks) 'open filename)
  64.          (if (= (strcase dmode) "SHOW")
  65.              (vla-put-visible appsession 1)
  66.              (vla-put-visible appsession 0)
  67.          );IF
  68.        );COND1
  69.    );COND
  70.    appsession
  71. )
  72. (defun Exl-quit (appsession)
  73.    (cond
  74.        ((not (vlax-object-released-p appsession))
  75.          (vlax-invoke-method appsession 'QUIT)
  76.          (vlax-release-object appsession)
  77.        )
  78.    )
  79. )
  80. (defun draw(pts)
  81.    (command "_.pline")
  82.    (mapcar 'command pts)
  83.    (command "")
  84.    (mapcar '(lambda(e) (if (= (car e) 0)
  85.      (command "_.line" (list 0 (+ (cadr e) 10)) '(0 0) "")
  86.      (command "_.line" e (list (car e) 0) "")
  87.                )
  88.        )
  89.      pts
  90.    )
  91.    (command "_.line" (list (- (caar pts) 10) 0) (list (+ (car (last pts)) 10) 0) "")         
  92.    (mapcar '(lambda(e)
  93.            (MakeText (list (car e) (- 2)) 1.25 (rtos (cadr e) 2 4))
  94.            (MakeText (list (car e) (- 12)) 1.25 (rtos (car e) 2 4))
  95.        )
  96.      pts
  97.    )
  98. )
  99. (defun main( / filename sheet zin)
  100.    (setq zin (getvar "dimzin"))
  101.    (setvar "dimzin" 1)
  102.    (setq filename (getfiled "打开存放数据的Excel电子表格文档" "e:\\wjh\\study\\autolisp\\nodbird\" "XLS" 8))
  103.    (if filename
  104.        (progn
  105.            (setq appsession (Exl-Open filename "SHOW"))
  106.            (setq sheet (vlax-get-property appsession 'ActiveSheet))
  107.            (SETQ A (GetRange sheet "B5" "C20"))
  108.            (Exl-quit appsession)
  109.            (setq a (mapcar '(lambda(e) (if (not (vl-every 'null e)) e)) A))
  110.            (setq a (vl-remove nil a))
  111.            (draw a)
  112.            
  113.        )
  114.    )   
  115.    (setvar "dimzin" zin)
  116.    (princ)
  117. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 12:43 , Processed in 0.183985 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表