12
返回列表 发新帖
楼主: shiyuxin0318

[其他] 有谁要搞cad二次开发,把题目提出来,我帮试试

[复制链接]
 楼主| shiyuxin0318 发表于 2007-9-29 20:56 | 显示全部楼层
原帖由 mikewolf2k 于 2007-9-28 20:29 发表
楼上,lisp跟excel也有接口,具体请到cad网站上查询。7楼的要求,我以前干过一摸一样的,用的是vb,很简单的。

vb我不会,我到晓东cad网上看看区,学它一招。版主,我发了那么多贴,能否给个魅力?看看下面的几个贴帮网站赚了不少人气!
http://bbs.hgbbs.net/thread-76200-1-2.html
http://bbs.hgbbs.net/thread-76189-1-2.html
http://bbs.hgbbs.net/thread-76228-1-1.html
特别是这个http://bbs.hgbbs.net/thread-75731-1-1.html下载二百多次,连个化工币都不给太让人失望!

[ 本帖最后由 shiyuxin0318 于 2007-9-30 09:18 编辑 ]

评分

参与人数 1魅力 +1 收起 理由
爱与和平 + 1 发贴奖励, 继续努力 ^_^

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| shiyuxin0318 发表于 2007-9-30 09:15 | 显示全部楼层
原帖由 landis 于 2007-9-29 11:00 发表
材料表中的数据求和,要能自动去除非数字字符,比如框选的对象中有"/"之类的非数字字符。最后给出有效数据总数及求和结果。

你这个没有问题,过了节帮您搞定。
回复 支持 反对

使用道具 举报

yachtz 发表于 2007-10-9 11:43 | 显示全部楼层

请教楼主

将块属性提取到Excel中进行修改,再将修改后的内容倒入AutoCad中,去更新块属性的内容,如何?

谢谢先.
回复 支持 反对

使用道具 举报

 楼主| shiyuxin0318 发表于 2007-10-10 10:41 | 显示全部楼层
原帖由 yachtz 于 2007-10-9 11:43 发表
将块属性提取到Excel中进行修改,再将修改后的内容倒入AutoCad中,去更新块属性的内容,如何?

谢谢先.

请问干吗要将块属性调入excel,目的是什么?告诉我目的可能我更好处理或更好满足您的要求。
回复 支持 反对

使用道具 举报

yachtz 发表于 2007-10-11 15:06 | 显示全部楼层
原帖由 shiyuxin0318 于 2007-10-10 10:41 发表

请问干吗要将块属性调入excel,目的是什么?告诉我目的可能我更好处理或更好满足您的要求。



感谢shiyuxin的热心!主要原因如下:


[ 本帖最后由 yachtz 于 2007-10-11 15:59 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?[加入论坛]

x
回复 支持 反对

使用道具 举报

 楼主| shiyuxin0318 发表于 2007-10-12 16:03 | 显示全部楼层
原帖由 yuun 于 2007-9-29 18:16 发表
(defun c:hrg()
  (setq ss (ssget))
  (setq n 0)
  (setq n_cir 0)
  (repeat (sslength ss)
    (setq en (ssname ss n))
    (setq endata (entget en))
    (setq entype (cdr (assoc 0 endata)))
     ...

看看行不行,有问题告诉我!见附件。

[ 本帖最后由 shiyuxin0318 于 2007-10-12 16:06 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?[加入论坛]

x

评分

参与人数 1化工币 +10 收起 理由
爱与和平 + 10 热心助人, 加分鼓励!^_^

查看全部评分

回复 支持 反对

使用道具 举报

kkiinngg 发表于 2007-10-13 09:39 | 显示全部楼层
在cad中绘制塔器时,经常要改动塔板间距、塔板数等参数,每次修改后都要重新计算塔的高度,有没有什么办法自动计算。
回复 支持 反对

使用道具 举报

 楼主| shiyuxin0318 发表于 2007-10-13 10:00 | 显示全部楼层
原帖由 kkiinngg 于 2007-10-13 09:39 发表
在cad中绘制塔器时,经常要改动塔板间距、塔板数等参数,每次修改后都要重新计算塔的高度,有没有什么办法自动计算。

自己建个公式在EXCEL中就可以完成。
回复 支持 反对

使用道具 举报

 楼主| shiyuxin0318 发表于 2007-10-22 11:04 | 显示全部楼层
原帖由 yachtz 于 2007-10-11 15:06 发表



感谢shiyuxin的热心!主要原因如下:
108092

这个问题有问题,可能不是太简单,容我好好考虑考虑。
回复 支持 反对

使用道具 举报

wgtchq8 发表于 2007-11-14 11:08 | 显示全部楼层
楼主能不能给一个计算器,可以在cad 中直接选中数字进行相加减等运算
回复 支持 反对

使用道具 举报

 楼主| shiyuxin0318 发表于 2007-11-14 13:10 | 显示全部楼层
原帖由 wgtchq8 于 2007-11-14 11:08 发表
楼主能不能给一个计算器,可以在cad 中直接选中数字进行相加减等运算
这个网上就有,自己找一下就行了。http://bbs.hgbbs.net/viewthread.php?tid=41097&highlight=%BC%C6%CB%E3%C6%F7

[ 本帖最后由 shiyuxin0318 于 2007-11-14 13:20 编辑 ]
回复 支持 反对

使用道具 举报

ppblog 发表于 2007-11-23 20:57 | 显示全部楼层

数据求和

原帖由 landis 于 2007-9-29 11:00 发表
材料表中的数据求和,要能自动去除非数字字符,比如框选的对象中有"/"之类的非数字字符。最后给出有效数据总数及求和结果。

Sub jia()
ActiveDocument.Utility.Prompt "请选择text或Mtext数字求和"
    Dim total As Double
     Dim j As Integer
    total = 0
    Dim ssetObj As AcadSelectionSet
    Set ssetObj = CreateSelectionSet("numberobj")
    Dim ftype, fdata
    'BuildFilter ftype, fdata, 0, "text"
       BuildFilter ftype, fdata, -4, "<or", 0, "text", 0, "Mtext", -4, "or>"
    ssetObj.SelectOnScreen ftype, fdata
    For i = 0 To ssetObj.Count - 1
        If IsNumeric(ssetObj.Item(i).textString) Then
            total = total + ssetObj.Item(i).textString
            j = j + 1
         Else
        End If
    Next i
    ssetObj.Delete
    ActiveDocument.Utility.Prompt "共选择了 " & j & " 个数,总和 = " & total
   
     Dim returnPnt As Variant
   
    ' Return a point using a prompt
    returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
    ' Create the text object in model space
    Set textObj = ThisDrawing.ModelSpace.AddText("求和=" & Str(total), returnPnt, height)
   
End Sub
Sub cheng()
ActiveDocument.Utility.Prompt "请选择text或Mtext求积"
    Dim ji As Double
    Dim j As Integer
    ji = 1
    Dim ssetObj As AcadSelectionSet
    Set ssetObj = CreateSelectionSet("numberobj")
    Dim ftype, fdata
    BuildFilter ftype, fdata, -4, "<or", 0, "text", 0, "Mtext", -4, "or>"
    ssetObj.SelectOnScreen ftype, fdata
    For i = 0 To ssetObj.Count - 1
        If IsNumeric(ssetObj.Item(i).textString) Then
            ji = ji * ssetObj.Item(i).textString
            j = j + 1
         Else
        End If
    Next i
    Dim textObj As AcadText

    ssetObj.Delete
    ActiveDocument.Utility.Prompt "共选择了 " & j & " 个数,乘积 = " & ji
      height = 4
   
   
End Sub
Sub Example_AddText()
    ' This example creates a text object in model space.
    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim height As Double
   
    ' Define the text object
    textString = "Hello, World."
    insertionPoint(0) = 2: insertionPoint(1) = 2: insertionPoint(2) = 0
    height = 100
   
    Dim returnPnt As Variant
   
    ' Return a point using a prompt
    returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
    ' Create the text object in model space
    Set textObj = ThisDrawing.ModelSpace.AddText(textString, returnPnt, height)
    ZoomAll
   
End Sub

Public Function CreateSelectionSet(Optional ssName As String = "ss") As AcadSelectionSet
  '返回一个空白选择集
  
    Dim ss As AcadSelectionSet
'该句改为:
'BuildFilter ftype, fdata, -4, "<or", 0, "text", 0, "Mtext", -4, "or>"

'然后再取值适用性就广了哈

   
    On Error Resume Next
    Set ss = ThisDrawing.SelectionSets(ssName)
    If Err Then Set ss = ThisDrawing.SelectionSets.Add(ssName)
    ss.Clear
    Set CreateSelectionSet = ss
End Function
Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
    '用数组方式填充一对变量以用作为选择集过滤器使用
    Dim ftype() As Integer, fdata()
    Dim index As Long, i As Long
   
    index = LBound(gCodes) - 1
        
    For i = LBound(gCodes) To UBound(gCodes) Step 2
        index = index + 1
        ReDim Preserve ftype(0 To index)
        ReDim Preserve fdata(0 To index)
        ftype(index) = CInt(gCodes(i))
        fdata(index) = gCodes(i + 1)
    Next
    typeArray = ftype: dataArray = fdata
End Sub

评分

参与人数 1化工币 +10 收起 理由
爱与和平 + 10 发贴奖励, 继续努力 ^_^

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [加入论坛]

本版积分规则

化工技术网- 赠人玫瑰 手有余香 ( 苏ICP备14035884号 )

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