乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 35|回复: 14

[编程交流] 错误的参数值:不是f

[复制链接]

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 07:52:22 | 显示全部楼层 |阅读模式
大家好,
 
运行此代码后,我收到一个错误(错误的参数值:不适合字节),无法找到解决方案。请帮忙。
 
  1. (defun c:Bathy (/ tpath fd info Soundings Bs Bsc BSL data ipt ba tpt x y xs ys)
  2. (defun *error* (msg)
  3. (if msg (princ (strcat "\nError! " msg)))
  4. (princ)
  5. )
  6. ;//pBe
  7. (defun _roundTruncated  (a)
  8.      (setq b (fix a)
  9.            c (* (abs (- a b)) 10))
  10.     (if (= c 0)
  11.       (setq d 0)
  12.            (setq d (fix (+ c (/ c (abs c) 2.0))))))
  13. ;//
  14. (setq tpath (getfiled "Select XYZ File" "*.*" "" 4))
  15.    (setvar "cmdecho" 0)
  16.    (setvar "osmode" 0)
  17.    (graphscr)
  18.    (setq fd   (open tpath "r")
  19.   info (read-line fd)
  20.    )
  21.    (if        (/= info nil)
  22.      (progn
  23. (if (setq Soundings (getfiled "Select Sounding Block" "*.*" "dwg" 4))
  24.   (progn
  25. (setq Bs (Getreal "\nScale factor for Bathymetry Block <1>:"))
  26. (if (= Bs Nil)
  27.   (setq Bsc 1)
  28.   (setq Bsc Bs)
  29. ))(exit))
  30.      )
  31.      (progn (alert "Bathy file is empty") (exit))
  32.    )
  33.    (setq Bsl (rtos Bsc 2 3))
  34.    (while (/= info nil)
  35.      (setq data (read (strcat "(" (vl-string-translate "," " " info) ")"))
  36.            ipt (list (car data)(cadr data))
  37.            bat (atof (rtos (caddr data) 2 4))
  38.     tpt data)
  39.      
  40.      (setq xfin 0
  41.     yfin 0
  42.     zfin 0)
  43.      
  44.      (Setq xfin (car data)
  45.     yfin (cadr data)
  46.     zfin (caddr data))
  47.      (setq xfin (1+ xfin)
  48.     yfin (1+ yfin)
  49.     zfin (1+ zfin))
  50.      
  51.      (setq xlst (cons xfin xlst)
  52.     ylst (cons yfin ylst)
  53.     zlst (cons zfin zlst))
  54.      
  55.      (setq xmax (apply 'max xlst)
  56.     xmax (eval (cons 'max xlst))
  57.     ymax (apply 'max ylst)
  58.     ymax (eval (cons 'max ylst))
  59.     zmax (apply 'max zlst)
  60.     zmax (eval (cons 'max zlst)))
  61.      (setq xmin (apply 'min xlst)
  62.     xmin (eval (cons 'min xlst))
  63.     ymin (apply 'min ylst)
  64.     ymin (eval (cons 'min ylst))
  65.     zmin (apply 'min zlst)
  66.     zmin (eval (cons 'min zlst)))
  67.      (command "_.zoom" "W" (list xmin ymin) (list xmax ymax))
  68.      
  69.      (if (< bat 0)
  70. (progn
  71.      (setq ba (* -1 bat)
  72.     x (fix ba)
  73.            y (_roundTruncated bat))
  74.      (if (= y 10)
  75. (progn
  76.   (setq x (+ x 1)
  77.         y 0))
  78. (progn
  79.   (setq x x
  80.         y y)))            
  81.      (setq xs (strcat "%%U" (itoa x))
  82.     ys (itoa y))
  83.      (command "insert" Soundings ipt Bsl Bsl 0 xs ys)
  84.      (setq info (read-line fd)))
  85.        (progn
  86.      (setq x  (fix bat)
  87.            y (_roundTruncated bat))
  88.      (if (= y 10)
  89. (progn
  90.   (setq x (+ x 1)
  91.         y 0))
  92. (progn
  93.   (setq x x
  94.         y y)))   
  95.      (setq xs        (itoa x)
  96.     ys        (itoa y))      
  97.      (command "insert" Soundings ipt Bsl Bsl 0 xs ys)
  98.      (setq info (read-line fd))
  99.    )))
  100.    (close fd)
  101.    (command "regen")
  102.    (setvar "osmode" 31743)
  103.    (*error* nil)
  104.    (princ)
  105. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:58:00 | 显示全部楼层
简而言之,它应该做什么?
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:02:09 | 显示全部楼层
谢谢pBe我一直在等待,很高兴看到你的回复。
实际上,我正在尝试从xyz文件中找出最小和最大x、y和z值。
在得到min x min y和max x以及max y之后,我将使用(命令_.zoom“W”(list minx miny)(list maxx maxy))。
简单地说,我想放大感兴趣的区域,然后我的命令插入应该开始。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:07:00 | 显示全部楼层
 
我明白了,从代码现在的编写方式来看。您希望在每次插入之前“缩放”。这是你想要的吗?
首先,第一次运行时,xlist、ylst、zlst将为缩放窗口传递相同的点值。。。结果*无效*
 
建议:从外部文件收集所有数据,然后从收集的列表中运行“插入和缩放”(如果需要)。但是,您可以调整代码,使其包含一个条件,即只有当xlst/ylst/zlst上有两个或更多数据时,它才会启动缩放。你知道即使这样。直到最后一次插入,您才真正“看到”代码的缩放部分。
 
所以,收集数据。检索最大/最小值,调用缩放,然后开始插入。
 
知道了?
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:11:17 | 显示全部楼层
谢谢
不是每次插入时我都要缩放,而是在导入块之前缩放到整个区域的范围。
例如,我的文件包含
200,300,13.5
300,500,14.6
500,100,17.1
800,1000,19.9
然后我想缩放窗口(list(xmin)200(ymin)100)(list(xmax)800(ymax)1000)整个区域并开始导入。
希望我能做到。
当做
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:16:51 | 显示全部楼层
 
  1. (defun _HiLow  (lev lev2 lst)
  2.      (list
  3.            (apply lev (mapcar 'car lst))
  4.            (apply lev2 (mapcar 'cadr lst))
  5.            ))

 
  1. (progn         
  2.    (setq fd   (open tpath "r"))
  3. (while  (setq  info (read-line fd))
  4.              (setq Pdata
  5.                         (cons (read (strcat "(" (vl-string-translate
  6.                                                   ","  " " info)
  7.                                             ")"))
  8.                               Pdata))
  9.              )
  10.                (close fd)
  11. (command "_.zoom" "w" (_HiLow 'min 'min [b]Pdata[/b])(_HiLow 'max 'max [b]Pdata[/b]))
  12. ....... <the rest of your code> .........

 
其中,Pdata是从外部文件导出的点列表
  1. ((200 300 13.5) (300 500 14.6) (500 100 17.1) (800 1000 19.9))

 
你可以在列表外进行操作
 
  1. (foreach item Pdata (do this..))

 
先试试看,如果遇到困难,请尽管问
 
编辑:不过,你可以在插入块时缩小收集点列表,这将减少处理时间,但我想只是一点点
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:19:17 | 显示全部楼层
谢谢。。明天我的办公时间结束了,我会试试看,让你知道它是怎么工作的。。。
再次感谢,祝你今天愉快。。
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:25:07 | 显示全部楼层
我很困惑。。请调查一下。
这是我正在使用的实际代码,未能在适当的位置插入您的代码。请帮我个忙。
 
  1. (defun c:Bathy (/ tpath fd info Soundings Bs Bsc BSL data ipt ba tpt x y xs ys)
  2. (defun *error* (msg)
  3. (if msg (princ (strcat "\nError! " msg)))
  4. (princ)
  5. )
  6. ;//pBe
  7. (defun _roundTruncated  (a)
  8.      (setq b (fix a)
  9.            c (* (abs (- a b)) 10))
  10.     (if (= c 0)
  11.       (setq d 0)
  12.            (setq d (fix (+ c (/ c (abs c) 2.0))))))
  13. ;//
  14. ;//pBe
  15. (defun _HiLow  (lev lev2 lst)
  16.      (list
  17.            (apply lev (mapcar 'car lst))
  18.            (apply lev2 (mapcar 'cadr lst))
  19.            ))
  20. ;//
  21. (setq tpath (getfiled "Select XYZ File" "*.*" "" 4))
  22.    (setvar "cmdecho" 0)
  23.    (setvar "osmode" 0)
  24.    (graphscr)
  25.    (setq fd   (open tpath "r")
  26.   info (read-line fd)
  27.    )
  28.    (if        (/= info nil)
  29.      (progn
  30. (if (setq Soundings (getfiled "Select Sounding Block" "*.*" "dwg" 4))
  31.   (progn
  32. (setq Bs (Getreal "\nScale factor for Bathymetry Block <1>:"))
  33. (if (= Bs Nil)
  34.   (setq Bsc 1)
  35.   (setq Bsc Bs)
  36. ))(exit))
  37.      )
  38.      (progn (alert "Bathy file is empty") (exit))
  39.    )
  40.    (setq Bsl (rtos Bsc 2 3))
  41.    (while (/= info nil)
  42.      (setq data (read (strcat "(" (vl-string-translate "," " " info) ")"))
  43.            ipt (list (car data)(cadr data))
  44.            bat (atof (rtos (caddr data) 2 4))
  45.     tpt data)
  46.      (if (< bat 0)
  47. (progn
  48.      (setq ba (* -1 bat)
  49.     x (fix ba)
  50.            y (_roundTruncated bat))
  51.      (if (= y 10)
  52. (progn
  53.   (setq x (+ x 1)
  54.         y 0))
  55. (progn
  56.   (setq x x
  57.         y y)))            
  58.      (setq xs (strcat "%%U" (itoa x))
  59.     ys (itoa y))
  60.      (command "insert" Soundings ipt Bsl Bsl 0 xs ys)
  61.      (setq info (read-line fd)))
  62.        (progn
  63.      (setq x  (fix bat)
  64.            y (_roundTruncated bat))
  65.      (if (= y 10)
  66. (progn
  67.   (setq x (+ x 1)
  68.         y 0))
  69. (progn
  70.   (setq x x
  71.         y y)))   
  72.      (setq xs        (itoa x)
  73.     ys        (itoa y))      
  74.      (command "insert" Soundings ipt Bsl Bsl 0 xs ys)
  75.      (setq info (read-line fd))
  76.    )))
  77.    (close fd)
  78.    (command "zoom" "e")
  79.    (command "regen")
  80.    (setvar "osmode" 31743)
  81.    (*error* nil)
  82.    (princ)
  83. )

 
我应该在哪一行插入您给定的缩放窗口代码,我正在尝试,但失败了。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:26:47 | 显示全部楼层
 
请原谅代码的粗糙性,我保留了你的大部分代码,否则它将是一个完整的重新编写,你真的不希望这样。原始代码越多,您就越容易理解。
 
  1. (defun c:Bathy (/ tpath fd info Soundings Bs Bsc BSL Pdata data ipt ba tpt x y xs ys)
  2. [color=blue](vl-load-com)[/color]
  3. (defun *error*  (msg)
  4.      (if msg
  5.            (princ (strcat "\nError! " msg)))
  6.      (princ)
  7.      )
  8. ;//pBe
  9. (defun _roundTruncated  (a)
  10.      (setq b (fix a)
  11.            c (* (abs (- a b)) 10))
  12.     (if (= c 0)
  13.       (setq d 0)
  14.            (setq d (fix (+ c (/ c (abs c) 2.0))))))
  15. (defun _HiLow  (lev lev2 lst)
  16.      (list
  17.            (apply lev (mapcar 'car lst))
  18.            (apply lev2 (mapcar 'cadr lst))
  19.            ))     
  20.      ;//
  21. [color=blue](defun _errormsg ( lst / x )[/color]
  22. [color=blue](if (setq x (vl-some '(lambda ( x ) (if (null (eval (car x))) (cadr x))) lst))[/color]
  23. [color=blue](alert x)[/color]
  24. [color=blue])[/color]
  25. [color=blue])[/color]
  26. (setvar "cmdecho" 0)
  27.      (graphscr)
  28. [color=blue](if (and[/color]
  29. (setq Pdata nil tpath (getfiled "Select XYZ File" "*.*" "txt" 4))
  30.        [color=blue](setq fsz (> (vl-file-size tpath) 0))[/color]
  31. (setq Soundings (getfiled "Select Sounding Block" "*.*" "dwg" 4))
  32.        [color=blue](progn[/color]
  33.              (setq Bs (Getreal "\nScale factor for Bathymetry Block <1>:"))
  34.       (if (= Bs Nil) (setq Bsc 1) (setq Bsc Bs))[color=blue])[/color]
  35. [color=blue])[/color]
  36. (progn
  37.       (setq fd   (open tpath "r"))
  38.       (setq Bsl (rtos Bsc 2 3))
  39.       (while  (setq  info (read-line fd))
  40.               (setq Pdata
  41.                          (cons (read (strcat "(" (vl-string-translate
  42.                                                    ","  " " info)
  43.                                              ")"))
  44.                                Pdata))
  45.               )
  46.      (close fd)
  47.                (command "_.zoom" "w" (_HiLow 'min 'min Pdata)(_HiLow 'max 'max Pdata))
  48.        (foreach data Pdata
  49.   (setq ipt (list (car data) (cadr data))
  50.         bat (atof (rtos (caddr data) 2 4))
  51.         tpt data)
  52.   (if (< bat 0)
  53.         (progn
  54.               (setq ba (* -1 bat)
  55.                     x  (fix ba)
  56.                     y  (_roundTruncated bat))
  57.               (if (= y 10)
  58.                     (progn
  59.                           (setq x (+ x 1)
  60.                                 y 0))
  61.                     (progn
  62.                           (setq x x
  63.                                 y y)))
  64.               (setq xs (strcat "%%U" (itoa x))
  65.                     ys (itoa y))
  66.                              )
  67.         (progn
  68.               (setq x (fix bat)
  69.                     y (_roundTruncated bat))
  70.               (if (= y 10)
  71.                     (progn
  72.                           (setq x (+ x 1)
  73.                                 y 0))
  74.                     (progn
  75.                           (setq x x
  76.                                 y y)))
  77.               (setq xs (itoa x)
  78.                     ys (itoa y))
  79.                             ))
  80. (command "insert" Soundings [color=blue]"_scale" Bsl "_non" ipt[/color] 0 xs ys)
  81.               (runtime "....            Creating Soundings")
  82.               )
  83. ;(command "zoom" "e")
  84. (command "regen")
  85.              )
  86.    [color=blue](_errormsg[/color]
  87. [color=blue] '([/color]
  88. [color=blue]    (tpath "Failed to select Data File")[/color]
  89. [color=blue]    (fsz "Bathy file is empty")[/color]
  90. [color=blue]    (Soundings "Failed to select Block")[/color]
  91. [color=blue]  )[/color]
  92. [color=blue])[/color]
  93.    )
  94. (*error* nil)
  95.    (princ)
  96. )

 
什么是(运行时…)作用
 
要考虑的系统变量:
Attreq公司
丁津
 
我建议您研究错误处理
Lee Mac的错误处理
 
HTH公司
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:33:24 | 显示全部楼层
谢谢你,
感谢您维护我的代码并将其更正到最后。
作为一个新手,如果你重写代码,我将无法理解你的代码。我对这个线程的最后一个要求是,请给我推荐一些好的VISUAL LISP教程
我从Jeffery P Sanders网站上学到的是一个很好的教程,适用于autolisp初学者,但适用于Visual Lisp?。。
顺便说一句,我的同事以前使用的runtme函数在导入块时会像连续的点一样出现,所以我删除了它,这样如果任何新手想要使用这个例程,他就不会感到困惑。
谢谢和问候
Aaryan公司
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 20:44 , Processed in 1.015892 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表