明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2944|回复: 11

第一次编程就要郁闷而死

  [复制链接]
发表于 2003-10-16 23:27:00 | 显示全部楼层 |阅读模式
学了几天vlisp,想编一个小程序(很粗糙的),结果出现“参数太少”,各位在线高手,帮我看一看哦,要不我今天睡不着了。。。。。。:(

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2003-10-17 07:36:00 | 显示全部楼层
本帖最后由 作者 于 2003-10-17 7:59:57 编辑

大家如有類似樓主的問題要記得把程序的功能和寫程序自己的一些碰到的問題發表出來. 這樣才達到共同交流的臺階. 方便大俠們指正. 這是我個人的見解.

你的程序的變量寫錯了所以會過行出錯. 現在更正了, 你看看. 但不知道你的程序是用來做什麼用的?

(defun c:dim11 (/ en1 pt1 en1data pt10 pt11 ang tex1 h en2 enh pt200 pt201 pt20 pt21)
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode" ))
  (setvar "osmode" 0)
  (setq en1 (entsel "\n????及插入位置:"))
  (setq pt1 (cadr en1))
  (setq en1data (entget (car en1)))
  (if (= (cdr (assoc 0 en1data)) "LINE")
   (progn
     (setq pt10 (cdr (assoc 10 en1data)))
     (setq pt11 (cdr (assoc 11 en1data)))   
     (setq ang (angle pt10 pt11))
     (setq tex1 (getstring "\n??入?注?容:"))
     (setq h (getreal "\n??入高度值:"))
     (command "text" "j" "c" pt1 h ang tex1)
     (setq en2 (entget (entlast)))
     (setq enh (textbox en2))
     (setq pt200 (car enh))
     (setq pt201 (cadr enh))
     (setq pt20 (polar pt201 (+ pi ang) (/ h 2)))
     (setq pt21 (polar pt202 (- ang pi) (/ h 2)))
     (command "break" en1 "f" pt20 pt21)
     )
     )
  (setvar "cmdecho" 1)
  (setvar "osmode" os)
   (princ)
)



-----------------------------------------------------------
我愛CAD.  多多交流, 多多指教.
发表于 2003-10-17 08:40:00 | 显示全部楼层
昨晚是不是没睡?这么晚了,谁会在线?呵呵

程序直接运行并没有你说的“参数太少”的错误,而是没有任何错误。当然,结果是不对的,因为你判断是用了小写的line,而一般ent返回的都是大写的,所以大部分程序没有执行,
BDYCAD改过之后还有几个问题,
1、TEXT命令输入的角度单位是度,而angle计算出来的角度是弧度,要转换一下
2、还有一个变量写错了,pt21后面的pt202没有定义过,而有一个pt200却没使用。
3、pt20和pt21的取值角度(+ pi ang)和(- ang pi)其实是一样的,你想想就知道了,相差360度
发表于 2003-10-17 08:58:00 | 显示全部楼层
3樓, 你太棒了. 其實我還返映來過來呢. 只是幫樓主看看是什麼原因. 但是具體還得由像你這樣的大俠指點才好. 呵呵.





----------------------------------------------------------
我愛CAD. 共同學習, 多多交流, 共同過攻CAD
 楼主| 发表于 2003-10-17 10:17:00 | 显示全部楼层
多谢各位大侠指点,昨晚是想到好晚才睡(当然是知道想也想不出来,就是睡不着),所以今天早上起得晚,但是一上来看到高手指点顿觉神清气爽,我编的小程序是有的时候在画图的时候某一地方要添加标注(当然不是那种正规的标注了),就将该地方的线段(当然也许应该是其它的也可)打断加上文字。现在还有一点不行,textbox帮助上说是返回文本边框的左下角和右下角点,为什么我打断出来之后不对呢?请高手指点~~~~~小女子先在此谢过!!!

本帖子中包含更多资源

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

x
发表于 2003-10-17 10:47:00 | 显示全部楼层
;;线中插字先试试!
(defun C:DIM11 (/ HOLDOSMODE HOLDECHO EN1 PT1 EN1DATA PT10 PT11        ANG TEX1
                H EN2)
  (setq EN1 (entsel "\n请选择线及插入位置:"))
  (setq PT1 (cadr EN1))
  (setq EN1DATA (entget (car EN1)))
  (if (= (cdr (assoc 0 EN1DATA)) "LINE")
    (progn
      (setq PT10 (cdr (assoc 10 EN1DATA)))
      (setq PT11 (cdr (assoc 11 EN1DATA)))
      (setq ANG (angle PT10 PT11))
      (setq TEX1 (getstring "\n请输入标注内容: "))
      (setq H (getreal "\n请输入高度值: "))
      (setq HOLDECHO (getvar "CMDECHO"))
      (setq HOLDOSMODE (getvar "OSMODE"))
      (setvar "cmdecho" 0)
      (setvar "OSMODE" 0)
      (command "_.text" "j" "M" "NEA" PT1 H (/ (* 180 ANG) pi) TEX1)
      (setq EN2 (cdr (assoc 10 (entget (entlast)))))
      (command "_.TRIM" (entlast) "" (list (car EN1) EN2) "")
      (setvar "OSMODE" HOLDOSMODE)
      (setvar "CMDECHO" HOLDECHO)
    )
  )
  (princ)
)
发表于 2003-10-17 10:49:00 | 显示全部楼层

我也想学!!给我一点信心

蓝心儿,学起来难吗?我也想学,可我对程序就是有恐惧症!!你给我一点信心吧!说说你的体会!!哈哈哈~~~
 楼主| 发表于 2003-10-17 11:12:00 | 显示全部楼层
龙龙仔大侠,谢谢你,我一开始也想用trim,可是在CAD中试了一下不行,无法选文本,没想到写成命令行到是可以,万分感谢!!!
陆志宏小弟,不知你以前有没有学过其它语言的编程哦?学起来不是很男,看例子的时候很容易就明白,可是真正编起来就男男男了,作女的好了,哈哈哈~~~~
 楼主| 发表于 2003-10-17 11:32:00 | 显示全部楼层
不好意思,是我昨天用trim命令,操作有误。。。。好丢人哦。。。
 楼主| 发表于 2003-10-17 11:59:00 | 显示全部楼层
但是我还是想知道为什么用textbox不对~~~拜托哪位大侠告诉我。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 14:34 , Processed in 0.193593 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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