HTTP 0 Báo cáo bài đăng Đã đăng Tháng 11 27, 2008 Mình dùng cad2009 và vb2005 để vẽ nhưng nếu sử dụng library của cad thì vẫn set ActiveLayer được nhưng khi không sử dụng thì lệnh này báo lỗi. Dim AcadApp As Object 'AcadApplication 'ứng dụng autocad Dim Strlayer As String Dim Tenlayer As Object AcadApp.ActiveDocument.Linetypes.Load("continuous", "acad.lin") AcadApp.ActiveDocument.Linetypes.Load("Acad_Iso03W100", "acad.lin") Strlayer = "Layermoi" Tenlayer = AcadApp.ActiveDocument.Layers.Add(Strlayer) With LayerChusolieu .Linetype = "continuous" .color = acColor.acGreen 'lệnh này gây lỗi???????????????? .LayerOn = True .Lock = False .Lineweight = .ACAD_LWEIGHT.acLnWtByLwDefault ''lệnh này gây lỗi????????? End With AcadApp.ActiveDocument.ActiveLayer = Tenlayer 'lệnh này gây lỗi khi chạy Bác nào khắc phục được xin chỉ giáo với. mình xin cảm ơn! Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
ndtnv 481 Báo cáo bài đăng Đã đăng Tháng 12 10, 2008 Mình dùng cad2009 và vb2005 để vẽ nhưng nếu sử dụng library của cad thì vẫn set ActiveLayer được nhưng khi không sử dụng thì lệnh này báo lỗi. Dim AcadApp As Object 'AcadApplication 'ứng dụng autocad Dim Strlayer As String Dim Tenlayer As Object AcadApp.ActiveDocument.Linetypes.Load("continuous", "acad.lin") AcadApp.ActiveDocument.Linetypes.Load("Acad_Iso03W100", "acad.lin") Strlayer = "Layermoi" Tenlayer = AcadApp.ActiveDocument.Layers.Add(Strlayer) With LayerChusolieu .Linetype = "continuous" .color = acColor.acGreen 'lệnh này gây lỗi???????????????? .LayerOn = True .Lock = False .Lineweight = .ACAD_LWEIGHT.acLnWtByLwDefault ''lệnh này gây lỗi????????? End With AcadApp.ActiveDocument.ActiveLayer = Tenlayer 'lệnh này gây lỗi khi chạy Bác nào khắc phục được xin chỉ giáo với. mình xin cảm ơn! Vì không dùng thư viện của acad nên không thể dùng các enum của acad được phải đổi lại code như sau: 'Tenlayer = AcadApp.ActiveDocument.Layers.Add(Strlayer) Set Tenlayer = AcadApp.ActiveDocument.Layers.Add(Strlayer) .... '.color = acColor.acGreen 'lệnh này gây lỗi???????????????? .color = "3" .... ' .Lineweight = .ACAD_LWEIGHT.acLnWtByLwDefault ''lệnh này gây lỗi????????? .Lineweight = -3 .... Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
HTTP 0 Báo cáo bài đăng Đã đăng Tháng 12 10, 2008 Cảm ơn bác! AcadApp.ActiveDocument.ActiveLayer = Tenlayer 'lệnh này gây lỗi khi chạy còn cái lỗi chính này bác có fix được ko. cái này mà không được thì cái trên cũng không có tác dụng. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
ndtnv 481 Báo cáo bài đăng Đã đăng Tháng 12 10, 2008 Cảm ơn bác!AcadApp.ActiveDocument.ActiveLayer = Tenlayer 'lệnh này gây lỗi khi chạy còn cái lỗi chính này bác có fix được ko. cái này mà không được thì cái trên cũng không có tác dụng. Vì bạn không post đầy đủ để hàm chạy được nên tôi có sửa lại chút ít và tôi đã test và chạy tốt. Dòng lệnh AcadApp.ActiveDocument.ActiveLayer = Tenlayer không có lỗi mà vì Tenlayer là 1 object nên phải dùng thêm Set ở trước khi gán Set Tenlayer = AcadApp.ActiveDocument.Layers.Add(Strlayer)thì dòng AcadApp.ActiveDocument.ActiveLayer = Tenlayer chạy sẽ không bị lỗi Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
HTTP 0 Báo cáo bài đăng Đã đăng Tháng 12 12, 2008 tôi dùng vb2005 không cần dùng lệnh set. nếu đánh lệnh này thì nó cũng tự xoá đi mà chỉ thành 1 dòng như trên thôi. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 218 Báo cáo bài đăng Đã đăng Tháng 12 14, 2008 With LayerChusolieu .Linetype = "continuous" [color="#FF0000"].color = acGreen[/color] .LayerOn = True .Lock = False [color="#FF0000"].Lineweight = .acLnWtByLwDefault[/color] End With AcadApp.ActiveDocument.ActiveLayer = Tenlayer 'lệnh này gây lỗi khi chạy Bác nào khắc phục được xin chỉ giáo với. mình xin cảm ơn! Đối tượng lớp LayerChusolieu không thấy khai báo? Bạn thử sửa lại code như trên xem sao? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
HTTP 0 Báo cáo bài đăng Đã đăng Tháng 12 16, 2008 đúng là layer LayerChusolieu phải đổi tên thành Tenlayer. hai lỗi trên mình đã fix thành số như bạn hướng dẫn và được rồi. nhưng dòng set Activelayer không chạy được, nó vẫn báo lỗi member not found. Mình đã chuyển sang sử dụng library rồi nhưng mình nghĩ đây cũng là cách hay để dùng với nhiều phiên bản Cad. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 218 Báo cáo bài đăng Đã đăng Tháng 12 28, 2008 đúng là layer LayerChusolieu phải đổi tên thành Tenlayer. hai lỗi trên mình đã fix thành số như bạn hướng dẫn và được rồi. nhưng dòng set Activelayer không chạy được, nó vẫn báo lỗi member not found. Mình đã chuyển sang sử dụng library rồi nhưng mình nghĩ đây cũng là cách hay để dùng với nhiều phiên bản Cad. Tenlayer phải là AcadLayer và phải tồn tại trong bản vẽ hiện tại, nếu không có thì nó báo lỗi. Ví dụ về khai báo và sử dụng Layer: Dim newLayer As AcadLayer ' Tạo Layer mới và kích hoạt nó hiện hành Set newLayer = ThisDrawing.Layers.Add("TestLayer") ThisDrawing.ActiveLayer = newLayer MsgBox "The new layer is " & newLayer.name, vbInformation, "ActiveLayer Example" Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác