做更具性价比的优质电气产品Hefei Zhizhun Electric Co., Ltd

合肥志准电气有限公司138-1730-7507
新闻中心
联系我们contact us
咨询热线:138-1730-7507

合肥志准电气有限公司

手机:13817307507(微信同号)

邮箱:zhizhundianqi@126.com

地址:安徽省合肥市经济技术开发区繁华大道12227号中环城E3地块D座办公楼办2222-2223室

新闻中心

当前位置: 首页 >> 新闻中心

Visual Lisp和Visual Studio实现照度计算并生成图纸的方法

发布时间:2026-02-09    来源:合肥志准电气    浏览次数:25
在照明设计中,通常要计算照度,作为设计的依据。照度计算并不复杂,通过简单的计算给出设计照度实际值。本文合肥志准电气有限公司小编介绍使用Visual Lisp和Visual Studio实现照度计算并生成图纸的方法。
1、照度计算依据
照度计算依据DLT5390-2014《发电厂和变电站照明设计技术规定》的附录B:计算平均照度,对于点光源的计算,一般用的少,不单独计算:
B.0.1 应用利用系数法计算平均展读应按下式进行
 
式中:Ec为工作面的平均照度(1x);Φ为光源光通量(1m);N为光源数量 ;K为灯具维护系数,取决于房间的污秽等级、房间和灯具的清扫周期,可按本规定表7.0.4的规定取值;A为工作面面积(mm2);CU为利用系数,取决于室形指数和房间的反射情况,由灯具制造厂提供。。
2、Visual Lisp实现照度计算
①Lisp 由于用户界面不是很灵活,数据取自excel表或直接从图纸中取。
对于这个照度计算,数据只能取自图纸,首先人工填入相关数据:
合肥志准电气有限公司 
相关的基础数据填入表格。
②计算程序:
(setq list_TQ nil)
                (setq Get_Text1 nil)    ;;;;;长
                (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 91)  0))
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 84)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_Long0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 84)  0))   ;;;;宽
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 77)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_Width0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
                (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 77)  0))  ;;;;高
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 70)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_Hihg0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
                (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 70)  0))  ;;;;被照面
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 63)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_hfe0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
               (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 63)  0))  ;;;;灯具高度
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 56)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_hre0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
                 (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 56)  0))  ;;;;灯具数量
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 49)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_sum0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
                 (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 49)  0))  ;;;;光通量
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 42)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_lm0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
                 (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 42)  0))  ;;;功率
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 35)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_pw0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
               (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 35)  0))  ;;;;利用系数
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 28)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_cu0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))
                 (setq Point_list01 (list (* TK_Scale2 60) (* TK_Scale2 28)  0))  ;;;;维护系数
                (setq Point_list02 (list (* TK_Scale2 110) (* TK_Scale2 21)  0))
                (setq Point_list (append (list Point_list01) (list Point_list02)))
                (setq Get_k0  (get_Text_1 Point_list Point_Base0 ))
                (setq list_TQ  (cons Get_Text1 list_TQ))
                (setq list_TQ  (list (reverse list_TQ)))

 
                (setq Get_Long1 (atof  Get_Long0))
                (setq Get_Width1 (atof  Get_Width0))
           (setq Get_Hihg1 (atof  Get_Hihg0))
      (setq Get_hfe1 (atof  Get_hfe0))
 
                (setq Get_hre1 (atof  Get_hre0))
                (setq Get_sum1 (atof  Get_sum0))
           (setq Get_lm1 (atof  Get_lm0))
      (setq Get_pw1 (atof  Get_pw0))
                (setq Get_cu1 (atof  Get_cu0))
           (setq Get_k1 (atof  Get_k0))

                (setq Ec (/ (* Get_lm1 Get_sum1 Get_cu1 Get_k1) (* Get_Long1 Get_Width1)))
                (setq RI (/ (* Get_Long1 Get_Width1) (* Get_hre1 (+ Get_Long1 Get_Width1))))
      (setq PowerD (/ (* Get_sum1 Get_pw1 ) (* Get_Long1 Get_Width1)))
 
 
        (setq Get_obj_B1 nil)           
        (setq Point_list01 (list  (* TK_Scale2 110) (* TK_Scale2 14)  0))   ;;;平均照度
        (setq Point_list02 (list  (* TK_Scale2 60) (* TK_Scale2 21 ) 0))
        (setq Point_list nil)
        (setq Point_list (append (list Point_list01) (list Point_list02)))
        (setq Get_obj_B1  (get_obj_1 Point_list Point_Base0 ))
        (vla-put-TextString Get_obj_B1 (rtos Ec 2 2))
               (setq Get_obj_B1 nil)           
        (setq Point_list01 (list  (* TK_Scale2 110) (* TK_Scale2 7)  0))   ;;;室型指数
        (setq Point_list02 (list  (* TK_Scale2 60) (* TK_Scale2 14 ) 0))
        (setq Point_list nil)
        (setq Point_list (append (list Point_list01) (list Point_list02)))
        (setq Get_obj_B1  (get_obj_1 Point_list Point_Base0 ))
        (vla-put-TextString Get_obj_B1 (rtos RI 2 2))
              (setq Get_obj_B1 nil)           
        (setq Point_list01 (list  (* TK_Scale2 110) (* TK_Scale2 0)  0))   ;;;功率密度
        (setq Point_list02 (list  (* TK_Scale2 60) (* TK_Scale2 7 ) 0))
        (setq Point_list nil)
        (setq Point_list (append (list Point_list01) (list Point_list02)))
        (setq Get_obj_B1  (get_obj_1 Point_list Point_Base0 ))
        (vla-put-TextString Get_obj_B1 (rtos PowerD 2 2))
因为取数据设计图纸的比例,因此计算相对比较复杂。
③计算结果:
合肥志准电气有限公司  
计算后结果填入表格相关位置。
3、C#的实现方法
①C#通过视图界面输入数据:
合肥志准电气有限公司  
②计算数据:
double HightB = House_Hith - House_HithB;
            Ec = (Light_Number * Light_lm * Factor_CU * Factor_K) / (House_Length * House_weith);
            Factor_K2 = (House_Length * House_weith) / (HightB * (House_Length + House_weith));
            Power_D = (Light_Number* Light_Power)/(House_Length * House_weith);

③添加图纸:
AcadApp.ActiveDocument.Utility.Prompt("给定插入点:");
            insertionPoint = (double[])AcadApp.ActiveDocument.Utility.GetPoint();
            Function_CAD.InsertBlock(AcadApp, insertionPoint, "照度计算块_100");
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] +8550 , House_Length.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700* 1 , House_weith.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 2, House_Hith.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 3, House_HithB.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 4, HightB.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 5, Light_Number.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 6, Light_lm.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 7, Light_Power.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 8, Factor_CU.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 9, Factor_K.ToString(), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 10, Ec.ToString("f2"), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 11, Factor_K2.ToString("f2"), 400, 0);
            Function_CAD.DrawText(AcadApp, insertionPoint[0] + 8110, insertionPoint[1] + 8550 - 700 * 12, Power_D.ToString("f2"), 400, 0);
④运行结果:
合肥志准电气有限公司  
和Lisp计算的结果完全相同。
4、小结
对应复杂的运行和涉及大量原始数据的运算,使用Visual Studio具有明显的优势。直接取数计算,结果添加到图形块中,非常简单。

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:13817307507。

本站全力支持关于《中华人民共和国广告法》实施的“极限化违禁词”的相关规定,且已竭力规避使用“违禁词”。故即日起凡本网站任意页面含有极限化“违禁词”介绍的文字或图片,一律非本网站主观意愿并即刻失效,不可用于客户任何行为的参考依据。凡访客访问本网站,均表示认同此条款!反馈邮箱:zhizhundianqi@126.com。