找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 529|回复: 5

[求助] [求助]:如何才能用VL创建一个现存的Layout的"完整"Copy ?

[复制链接]

已领礼包: 23个

财富等级: 恭喜发财

发表于 2003-9-15 22:12:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何才能用VL创建一个现存的Layout的Copy,产生一个和用layout命令的copy选项的到相同结果的NewLayout ?
迷惑中...

一下sample code怎么不能成功?

  1. (setq AcadObject (vlax-get-acad-object))
  2. (setq CDoc (vla-get-ActiveDocument AcadObject))
  3. (setq Layouts (vla-get-Layouts CDoc))
  4. (setq Layouts-list '() )
  5. (setq CLayout (vla-get-ActiveLayout CDoc))
  6. (setq PlotConfigs (vla-get-PlotConfigurations CDoc))
  7. (setq PlotConfigs-list '())
  8. (vlax-for item PlotConfigs
  9.   (setq PlotConfigs-list (cons item PlotConfigs-list))
  10. )

  11. (setq NewLayout (vla-Add Layouts "NewLayout"))
  12. (vla-CopyFrom NewLayout (nth 0 PlotConfigs-list)) ;; return nil , WHY ?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2003-9-15 22:14:23 | 显示全部楼层
上面的codes只能创建一个NewLayout ,不能把SourceLayout中的PViewport也CopyFrom过来
使用(vla-CopyFrom ....)返回值是nil .

在ActiveX中这个问题似乎不是那么简单了
看帮助文档,一个Layout有一个对应的Block对象
我检查了这个Block对象中的Objects
其中有一个对象不好理解
Block中有两个PViewport,但实际上只有一个是我手动用命令生成的,另一个是什么呢?我不明白...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-9-15 22:33:32 | 显示全部楼层
最初由 e2002 发布
[B]上面的codes只能创建一个NewLayout ,不能把SourceLayout中的PViewport也CopyFrom过来
使用(vla-CopyFrom ....)返回值是nil .

在ActiveX中这个问题似乎不是那么简单了
看帮助文档,一个Layout有一个对应的Block对... [/B]


使用ARX,可以很简单,用copyFrom 就可以了,但是ActiveX没有提供从一个LAYOUT模板生成另外一个的方法,但是可以变通做到。

下面是一个VBA代码例子,使用了SENDCOMMAND,用命令去做。

  1. [font=courier]
  2. Sub AddLayout()

  3. Dim aVarName As String
  4. Dim iSvarValue As Integer

  5. iSvarValue = 0
  6. aVarName = "FILEDIA"
  7. ThisDrawing.SetVariable aVarName, iSvarValue

  8. ThisDrawing.SendCommand "-LAYOUT T ACADISO.DWT" & Chr$(13)
  9. ThisDrawing.SendCommand "LAYOUT2" & Chr$(13)

  10. iSvarValue = 1
  11. ThisDrawing.SetVariable aVarName, iSvarValue

  12. End Sub
  13. [/font]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2003-9-15 22:50:58 | 显示全部楼层
这个是导入某个dwt中的layout ,用vl-cmdf也可以作到。
我的要求不是这个,本质上我的要求就是用VL的ActiveX方法完全实现命令layout的copy选项的功能
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-9-16 21:58:06 | 显示全部楼层

  1. ' 这是vb的 copyfrom
  2. Dim PlotConfigurations As AcadPlotConfigurations
  3.     Dim PlotConfiguration As AcadPlotConfiguration
  4.     Dim NewPC1 As AcadPlotConfiguration, NewPC2 As AcadPlotConfiguration
  5.    
  6.     ' Get PlotConfigurations collection from document object
  7.     Set PlotConfigurations = ThisDrawing.PlotConfigurations
  8.    
  9.     ' Add a new PC and customize some of the properties
  10.     Set NewPC1 = PlotConfigurations.Add("NEW_CONFIGURATION1")
  11.         NewPC1.PlotRotation = ac270degrees
  12.         NewPC1.PlotHidden = True
  13.         NewPC1.PaperUnits = acMillimeters
  14.    
  15.     ' Add another PC and leave default values intact
  16.     Set NewPC2 = PlotConfigurations.Add("NEW_CONFIGURATION2")
  17.    
  18.     ' Show PC2 settings before we copy information from PC1
  19.     GoSub VIEWPC2SETTINGS
  20.    
  21.     ' Copy setting information from PC1 to PC2
  22.     NewPC2.CopyFrom NewPC1
  23.    
  24.     ' Show PC2 settings after we copy information from PC1
  25.     GoSub VIEWPC2SETTINGS
  26.    
  27.     Exit Sub

我理解是不是只是一个PlotConfig拷到另一个PlotConfig

NewLayout 没有vla-CopyFrom 的用法

直接用layout命令复制好了,一样的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2003-9-16 22:38:32 | 显示全部楼层
在mccad和Lucas的帮助下,基本上已经完成了这样的一个函数,正在整理和优化中...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 20:40 , Processed in 0.330280 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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