ryankevin15 发表于 2022-7-5 16:25:47

电气面板相位平衡

好吧,就这么定了。我需要一个LISP来计算相位平衡,它基本上是两个数字之间的误差百分比,如下表所示。然而,我们需要它进行选择,找到最大数和最小数,并进行以下计算,而不管集合中的数字是多少。
 
(大-小)/大*100=X.X%
 
目前,我们使用ADD。LSP接受一个选择并将数字相加。我对编程不够熟悉,因此无法使用这个相对简单的算法并使其成为一个有效的LSP。
 
如果有人能做这样的事情,我已经附加了ADD命令。
 
添加LSP
 
它应该通过进行选择来工作,然后提示用户选择放置相位平衡的位置(通过将所选文本调整为更新值X.X%)。

ryankevin15 发表于 2022-7-5 16:36:40

http://imgur.com/4995gga
 
在上图中。这个程序,如果我能让它工作的话,将通过选择所有三个数字,点击空格键,然后选择相位平衡旁边的数字,然后再次点击空格键来工作。

ReMark 发表于 2022-7-5 16:50:33

如果你看一下你想编辑的帖子的右下角,你应该会看到文字“编辑帖子”。点击短语。

ReMark 发表于 2022-7-5 16:57:55

啊。。。十杆最低得分再次出现。很抱歉

Roy_043 发表于 2022-7-5 17:02:29

试试这个:
(defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
(if ss
   (repeat (setq i (sslength ss))
   (setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
   )
)
)

(defun c:PhaseBalance ( / ss numLst numMin numMax res trg)
(if
   (and
   (princ "\nSelect source entities: ")
   (setq ss (ssget '((0 . "TEXT") (1 . "~*[~-.0-9]*") (1 . "~*`.*`.*") (1 . "~?*-*"))))
   (setq trg (car (entsel "\nSelect target entity: ")))
   (= "AcDbText" (vla-get-objectname (setq trg (vlax-ename->vla-object trg))))
   )
   (progn
   (setq numLst
       (mapcar
         '(lambda (obj) (read (vla-get-textstring obj)))
         (KGA_Conv_Pickset_To_ObjectList ss)
       )
   )
   (setq numMin (apply 'min numLst))
   (setq numMax (apply 'max numLst))
   ;; Formula: (Big - Small)/Big * 100 = X.X%
   (setq res (strcat (rtos (/ (- numMax numMin) numMax 0.01) 2 1) "%"))
   (princ (strcat "\nPhase Balance: "res))
   (vla-put-textstring trg res)
   )
)
(princ)
)

ryankevin15 发表于 2022-7-5 17:14:12

你能从一个面板上取一个总瓦数除以360得到安培数吗?我可以称之为360度或者其他什么。哇,还是很惊讶你编的代码!

ryankevin15 发表于 2022-7-5 17:18:17

Roy_043,
 
您是否可以制作一个lisp,该lisp取一个值(以瓦特为单位的总需求)并除以360得到208V的总需求安培数?此外,当使用480V时,我们除以831。这两个Lisp程序会让事情变得更快。此外,在相位平衡中,是否对该值进行了舍入?你是自己做了相位平衡还是碰巧已经做了?

BKT 发表于 2022-7-5 17:33:35

 
如果您只想更改输出的小数点精度,请查看Roy_043代码中的RTOS函数。
 
http://ronleigh.com/autolisp/afude12.htm#rtos
页: [1]
查看完整版本: 电气面板相位平衡