freecad 的脚本是使用的python解释器, 但是freecad内部的python只有基础的包,对第三方开发包支持度不是很高.有两种方式解决.

一种是使用外部python是可以控制freecad进行绘图的. 具体的可以找网上查查, 好像是安装一个freecad的包即可.

另外一种我认为比较方便, freecad内部直接调用外部python环境的包的方式实现.

下面是第二种的实现过程.
首先是导入外部python环境.

import sys
sys.path += ['~/anaconda3/bin', '', '/opt/ros/noetic/lib/python3/dist-packages', '~/anaconda3/lib/python38.zip', '~/anaconda3/lib/python3.8', '~/anaconda3/lib/python3.8/lib-dynload', '~/.local/lib/python3.8/site-packages', '~/anaconda3/lib/python3.8/site-packages', '~/anaconda3/lib/python3.8/site-packages/web.py-0.62-py3.8.egg', '~/anaconda3/lib/python3.8/site-packages/skidl-0.0.30-py3.8.egg', '~/anaconda3/lib/python3.8/site-packages/graphviz-0.16-py3.8.egg', '~/anaconda3/lib/python3.8/site-packages/kinparse-0.1.2-py3.8.egg', '~/anaconda3/lib/python3.8/site-packages/pycairo-1.20.1-py3.8-linux-x86_64.egg', '~/anaconda3/lib/python3.8/site-packages/unzip_gbk-1.0-py3.8.egg', '~/anaconda3/lib/python3.8/site-packages/locket-0.2.1-py3.8.egg', '~/anaconda3/lib/python3.8/site-packages/IPython/extensions', '~/.ipython']

这里 pyexcel 包在freecad的python内部是没有的, 所以调用外部环境的pyexcel包.

import pyexcel as p
import osALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def digit(alphabet):"""26进制 -> 10进制"""return sum(ALPHABET.index(a) * (26 ** e) for e, a in enumerate(reversed(alphabet)))def alph(digit):"""10进制 -> 26进制"""mod, remainder = divmod(digit, 26)alphabet = ALPHABET[remainder]while mod:mod, remainder = divmod(mod, 26)alphabet = ALPHABET[remainder] + alphabetreturn alphabet# 表格信息,下面有格式
tab_nm ='~/freecad_auto_gen/data/rebot_arm.xls'
# doc_nm = 'joint02_2'
book = p.get_book(file_name=tab_nm)
ss = book.to_dict()
for spsheet_dname in ss:sp = App.ActiveDocument.getObject(spsheet_dname)if sp is None:App.activeDocument().addObject('Spreadsheet::Sheet',spsheet_dname)sp = App.ActiveDocument.getObject(spsheet_dname)sheet = book[spsheet_dname]# 清除以前的緩存信息for il, l in enumerate(sheet.row):for jc, c in enumerate(l):sp.setAlias(alph(jc)+str(il+1),'')key_ind = sheet.row[0].index("key")val_ind = sheet.row[0].index("value")for jc, c in enumerate(sheet.row[0]):sp.set(alph(jc)+str(1), str(c))for il, l in enumerate(sheet.row[1:]):for jc, c in enumerate(l):sp.set(alph(jc)+str(il+2), str(c))el_key = alph(key_ind)+str(il+2)el_val = alph(val_ind)+str(il+2)sp.setDisplayUnit(el_val, 'mm')if l[key_ind] == '' or l[val_ind] == '':continuesp.setAlias(el_val, str(l[key_ind]))sp.set(alph(jc+1)+str(il+2), '<<'+spsheet_dname+'>>.'+l[key_ind])
#重新模型
App.ActiveDocument.recompute()
tab_nm ='~/freecad_auto_gen/data/rebot_arm.xls' 的格式

ps: 可能需要注意外部环境的python和内部环境的版本问题.

freecad 脚本相关推荐

  1. FreeCAD stp文件基于python脚本操作

    FreeCAD对于3D模型处理这块的东西封装的还是很完善的,所以移植这块的东西还是有必要的! 首先下载FreeCAD编译好的库: https://www.freecadweb.org/wiki/Dow ...

  2. html格式文档结构保存数据库6,freeCAD文档结构

    一个freecad文档包含了你场景中的所有物体.它可以包含组及任何工作平台制造的物体.你可以切换工作台,但是它仍然工作在同一个文档上.当您保存您的工作时,该文件就被保存到磁盘上.你可以同时打开多个fr ...

  3. Linux 下的 3D 设计软件-FreeCAD

    FreeCAD 是一个基于 OpenCasCade 的跨平台机械工程和产品设计工具.作为参数化 3D 建模工具,它可以与 PLM.CAx.CAE.MCAD 和 CAD 协同工作,并且可以使用大量高级扩 ...

  4. python参数化3d_3D参数化建模器freecad中文版

    原标题:3D参数化建模器freecad中文版 FreeCAD for Mac是Mac平台上一款开源的3D参数化建模器,freecad中文版拥有基于著名Qt框架的完整图形用户界面,还提供了网格测试和修复 ...

  5. FreeCAD 官方文档 —— 一、 概述

    FreeCAD维基官方文档传送门,浏览原网站需自备梯子,该文档的许多页面中文翻译不完整. 自己的英语水平不好,以下内容借助了维基上已翻译好的内容.谷歌翻译.有道云词典. 我的使用环境: OS: Ubu ...

  6. linux cad 安装教程,如何在Ubuntu 18.04/16.04/Linux中安装FreeCAD 0.18

    FreeCAD,免费和开源3D参数化建模器,最近发布了0.18版,支持Python 3和Qt 5. 以下是如何在Ubuntu 16.04,Ubuntu 18.04和Ubuntu 19.04中安装它. ...

  7. FreeCAD是什么、如何下载(windows+0.18.4版本)和安装以及中文设置

    目录 一.FreeCAD是什么 二.如何下载FreeCAD 三.FreeCAD安装过程 四.如何设置成中文 一.FreeCAD是什么 我本意是想用Qt连接CAD实现CAD的二次开发,实现在qt界面改变 ...

  8. 制作FreeCAD安装包的方法

    制作FreeCAD安装包的方法 济南友泉软件有限公司 本文介绍两种在Windows下制作FreeCAD安装包的方法:使用CPack制作安装包.直接使用NSIS制作安装包. 零.基础环境 操作系统:Wi ...

  9. linux系统设计软件,FreeCAD:Linux 下的 3D 建模和设计软件

    FreeCAD 是一个基于 OpenCasCade 的跨平台机械工程和产品设计工具.作为参数化 3D 建模工具,它可以与 PLM.CAx.CAE.MCAD 和 CAD 协同工作,并且可以使用大量高级扩 ...

最新文章

  1. 修改labelImg软件的yolo标注写入格式(.txt文件不换行的解决办法)(将换行符'\n'替换成'\r\n')
  2. 07_Android操作sqllite数据库(包括2中方式操作数据的方式),单元测试,BaseAdapter的使用,自定义view的综合使用案例
  3. 《大道至简》第二章 读后感
  4. 用Linux命令行生成随机密码的十种方法
  5. 如何实现两列等高效果?
  6. HTML5安全风险详析之三:WebSQL攻击
  7. 牛客网 二叉搜索树与双向链表
  8. 读书笔记(chapter18)
  9. Implement queue with two stack 用两个堆实现队列
  10. 10款推荐系统模拟器汇总
  11. 小孔子内容管理系统V2.0正式开源发布
  12. [OfficeExcel] OfficeExcel2010 第18讲 Lookup--浅谈数组
  13. 新手如何玩转拼多多?需要注意什么?
  14. oracle数据库中批量把一张表里面的数据插入到不同的表中的方法
  15. 蓝牙5.0跟蓝牙4.2的区别
  16. 有一个学霸对象是什么体验?
  17. 永恒之蓝黑脏牛提权范围
  18. 计算机社团活动总结ppt模板,2021年社团活动总结模板汇总七篇
  19. webstorm破解方法(2018.3.2 64x版本)
  20. 1+X”中级Web前端证书对应课程分析

热门文章

  1. 96年的我成功上岸了,耗时三个月成功拿到了思科,哈罗出行的offer!
  2. SpringBoot整合支付宝之电脑网站支付
  3. 搭建LittlevGL PC模拟器环境
  4. Gated Bi-directional CNN for Object Detection
  5. 使用Win10系统在R中加载TensorFlow-gup加快深度学习运行之攻略
  6. 如何认识客户满意度调查
  7. C语言学习(指针)+PID系统
  8. 手机QQ AndroidManifest 用于跳转
  9. 为使用HD4XXX显卡的机器安装CentOS6.4
  10. 纳尼??鹅厂码农最常用的三大编程语言,Java竟然没上榜!