PDA

View Full Version : Bảo vệ bản vẽ trong AutoCAD


anhxd
03-25-2010, 10:26 PM
AutoCAD 2004 có thêm tính năng có thể mã hóa bản vẽ dựa vào mật khẩu giúp bảo vệ bản vẽ, ngăn chặn bản vẽ bị đánh cắp và giữ bí mật dữ liệu. Có hai cách đặt mật khẩu cho bản vẽ:
[Only registered and activated users can see links]
- Cách thứ nhất: Trong khi đang thiết kế, vào menu Tools > Options > thẻ Open and Save > nhấn nút Security Options > gõ mật khẩu vào ô Password or phrase to open this drawing, đánh dấu Encrypt drawing properties nếu muốn mã hóa các đặc tính bản vẽ như tiêu đề, tác giả, chủ đề và các từ khóa > nhấn OK.
- Cách thứ hai: Khi lưu bản vẽ, vào menu File > Save As > trong hộp thoại Save Drawing As chọn Tools > Security Options và … lại xuất hiện hộp thoại Security Options. Tiến hành tương tự như cách thứ nhất. Mật khẩu chỉ được cài vào các file AutoCAD có phần mở rộng: DWG, DWS và DWT của AutoCAD2004.

Mr.Thiệu
03-25-2010, 11:05 PM
Em còn cách này nữa ạ . . . nhưng những cách này chỉ dùng để đối phó với những người ko biết nhiều về CAD :D

1. Chuyển tất tần tật các bản vẽ về Block: Ctrl +all => Draw => Block => make block => đặt 1 cái tên bất kì. . .
Lock all layer: Layer => Click chọn tất cả layer trong list => Click vào Icon "Lock" :D vậy là ko thể Modify, xóa bả vẽ. . . cách mở khóa: làm ngược lại.

2. Hide Text on dimension: Dimesion setting (D => enter) => chọn thẻ Modify => Text => chọn Icon "..." trong dòng Text Style => Để ý phía dưới Phần Font name có phần Choose "Use Big Font" => Click chọn và quay lại bản vẽ xem kết quả, cách mở khóa thì làm ngược lại

2 chiêu trên đôi khi làm những người không hiểu sâu về CAD chỉ có thể xem file mà không thể chỉnh sửa gì. . .:D

3. Và cách bảo vệ tốt nhất cho sản phầm của mình là: File => Print => chọn trong phần "Printer name" là " DWG to PDF.pc3" . . .và in từng bản vẽ ra (lưu bản vẽ dưới dạng File PDF) :D

hiep-pro
03-25-2010, 11:11 PM
AutoCAD 2004 có thêm tính năng có thể mã hóa bản vẽ dựa vào mật khẩu giúp bảo vệ bản vẽ, ngăn chặn bản vẽ bị đánh cắp và giữ bí mật dữ liệu. Có hai cách đặt mật khẩu cho bản vẽ:
[Only registered and activated users can see links]
- Cách thứ nhất: Trong khi đang thiết kế, vào menu Tools > Options > thẻ Open and Save > nhấn nút Security Options > gõ mật khẩu vào ô Password or phrase to open this drawing, đánh dấu Encrypt drawing properties nếu muốn mã hóa các đặc tính bản vẽ như tiêu đề, tác giả, chủ đề và các từ khóa > nhấn OK.
- Cách thứ hai: Khi lưu bản vẽ, vào menu File > Save As > trong hộp thoại Save Drawing As chọn Tools > Security Options và … lại xuất hiện hộp thoại Security Options. Tiến hành tương tự như cách thứ nhất. Mật khẩu chỉ được cài vào các file AutoCAD có phần mở rộng: DWG, DWS và DWT của AutoCAD2004.
Cách này là bảo vệ bản vẽ luôn ,ko cho người khác xài .Có những bản vẽ đưa cho người khác xài ,nhưng họ ko làm được gì cả thế mới hay ^^

hiep-pro
03-25-2010, 11:13 PM
Em còn cách này nữa ạ . . . nhưng những cách này chỉ dùng để đối phó với những người ko biết nhiều về CAD :D

1. Chuyển tất tần tật các bản vẽ về Block: Ctrl +all => Draw => Block => make block => đặt 1 cái tên bất kì. . .
Lock all layer: Layer => Click chọn tất cả layer trong list => Click vào Icon "Lock" :D vậy là ko thể Modify, xóa bả vẽ. . . cách mở khóa: làm ngược lại.

2. Hide Text on dimension: Dimesion setting (D => enter) => chọn thẻ Modify => Text => chọn Icon "..." trong dòng Text Style => Để ý phía dưới Phần Font name có phần Choose "Use Big Font" => Click chọn và quay lại bản vẽ xem kết quả, cách mở khóa thì làm ngược lại

2 chiêu trên đôi khi làm những người không hiểu sâu về CAD chỉ có thể xem file mà không thể chỉnh sửa gì. . .:D

3. Và cách bảo vệ tốt nhất cho sản phầm của mình là: File => Print => chọn trong phần "Printer name" là " DWG to PDF.pc3" . . .và in từng bản vẽ ra (lưu bản vẽ dưới dạng File PDF) :D
Những ai rành về CAD có thể phá bỏ những cái trên (mở lại layer ,chuyển từ PDF sang DWG...) 1 cách dễ dàng :D

Mr.Thiệu
03-25-2010, 11:19 PM
Những ai rành về CAD có thể phá bỏ những cái trên (mở lại layer ,chuyển từ PDF sang DWG...) 1 cách dễ dàng :D

Em có viết ngay từ đầu:D

Em còn cách này nữa ạ . . . nhưng những cách này chỉ dùng để đối phó với những người ko biết nhiều về CAD :D


Cách này là bảo vệ bản vẽ luôn ,ko cho người khác xài .Có những bản vẽ đưa cho người khác xài ,nhưng họ ko làm được gì cả thế mới hay ^^

Mong anh chỉ giáo đàn em :D

HOANGACSC
03-26-2010, 10:11 AM
Cách này là bảo vệ bản vẽ luôn ,ko cho người khác xài .Có những bản vẽ đưa cho người khác xài ,nhưng họ ko làm được gì cả thế mới hay ^^
mấy công ty thiết kế thường có thêm file exref đi kèm thì phải? không biết đúng như bác hiệp nói không?[Only registered and activated users can see links]

Và cách bảo vệ tốt nhất cho sản phầm của mình là: File => Print => chọn trong phần "Printer name" là " DWG to PDF.pc3" . . .và in từng bản vẽ ra (lưu bản vẽ dưới dạng File PDF)

Hiện nay có cả dozen phần mềm chuyển đổi từ PDF sang Autocad[Only registered and activated users can see links]

trungluu12
03-26-2010, 10:22 AM
Cách này là bảo vệ bản vẽ luôn ,ko cho người khác xài .Có những bản vẽ đưa cho người khác xài ,nhưng họ ko làm được gì cả thế mới hay ^^

Có thể dùng lệnh MINSERT đơn giản mà hiệu quả. Rất khó explode để modify

hiep-pro
03-26-2010, 11:06 AM
mấy công ty thiết kế thường có thêm file exref đi kèm thì phải? không biết đúng như bác hiệp nói không?[Only registered and activated users can see links]

Xref chứ ko phải exref :D Không phải ! Cái đó là tiện ích cho người thiết kế trong việc cập nhật bản vẽ thôi . Khi giao bản vẽ cho người ta thì phải giao kèm các file xref đấy hoặc là bind chúng lại mới xem được .

hiep-pro
03-26-2010, 11:08 AM
Có thể dùng lệnh MINSERT đơn giản mà hiệu quả. Rất khó explode để modify
Có nhiều cách phá đấy bác : Bạn có thể nhấn đúp vào để edit rồi chọn hết đối tượng trong đó.Nhấn ctrl-C ,Sau đó ra ngoài paste ,Lúc đó bạn muốn làm gì thì tùy ý :D , sử dụng lệnh xplode , lsp ...

trungluu12
03-26-2010, 11:19 AM
Có nhiều cách phá đấy bác : Bạn có thể nhấn đúp vào để edit rồi chọn hết đối tượng trong đó.Nhấn ctrl-C ,Sau đó ra ngoài paste ,Lúc đó bạn muốn làm gì thì tùy ý :D ,sử dụng lsp ...

Chắc bro nhầm lệnh INSERT. lệnh MINSERT không thể ấn đúp edit được, không explode được. Sử dụng LISP thì OK. Nhưng đâu phải ai cũng bít LISP hay có thời gian ngồi lập trình.

HOANGACSC
03-26-2010, 11:39 AM
Chắc bro nhầm lệnh INSERT. lệnh MINSERT không thể ấn đúp edit được, không explode được. Sử dụng LISP thì OK. Nhưng đâu phải ai cũng bít LISP hay có thời gian ngồi lập trình.

Mình cũng gặp bản vẽ tương tự .Bro nào biết cách phá thì chỉ mình với.hay có lisp thì tốt
Thanks very much!![Only registered and activated users can see links]

hiep-pro
03-26-2010, 11:42 AM
Chắc bro nhầm lệnh INSERT. lệnh MINSERT không thể ấn đúp edit được, không explode được. Sử dụng LISP thì OK. Nhưng đâu phải ai cũng bít LISP hay có thời gian ngồi lập trình.
Mỉnh ko nhầm đâu bạn . Lệnh XPLODE (không phải ệnh EXPLODE) --> đối tượng bị nổ nhưng vẫn giữ các tính chất như ban đầu (Layer,Color,Linetype,...)

Command: xplode

Select objects to XPlode.
Select objects: Specify opposite corner: 13 found
Select objects: Specify opposite corner: 3 found (2 duplicate), 16 total
Select objects:
16 objects found. 3 invalid.
XPlode Individually/<Globally>: G
Enter an option
[All/Color/LAyer/LType/LWeight/Inherit from parent block/Explode] <Explode>: I
Objects exploded.

trungluu12
03-26-2010, 11:44 AM
Mình cũng gặp bản vẽ tương tự .Bro nào biết cách phá thì chỉ mình với.hay có lisp thì tốt
Thanks very much!![Only registered and activated users can see links]

Đã lâu rùi không dùng Cad, ít nhất cũng 3 năm rùi. Lúc trước có lập trình LISP để phá MINSERT nhưng lêu rùi nên để đâu không tìm ra được. Bro search trên mạng sẽ có đó nhất là các web nước ngoài. Có trang bán chỉ vài USD, có trang free lun.

Thân,

trungluu12
03-26-2010, 11:46 AM
Mỉnh ko nhầm đâu bạn . Lệnh XPLODE (không phải ệnh EXPLODE) --> đối tượng bị nổ nhưng vẫn giữ các tính chất như ban đầu (Layer,Color,Linetype,...)

Command: xplode

Select objects to XPlode.
Select objects: Specify opposite corner: 13 found
Select objects: Specify opposite corner: 3 found (2 duplicate), 16 total
Select objects:
16 objects found. 3 invalid.
XPlode Individually/<Globally>: G
Enter an option
[All/Color/LAyer/LType/LWeight/Inherit from parent block/Explode] <Explode>: I
Objects exploded.
Hỉu rùi nhưng đối tượng ban đầu của bro là được INSERT vào chứ ko phải MINSERT vào bản vẽ.

Hoặc chăng mình bị lạc hậu rùi.

hiep-pro
03-26-2010, 11:49 AM
Mình cũng gặp bản vẽ tương tự .Bro nào biết cách phá thì chỉ mình với.hay có lisp thì tốt
Thanks very much!![Only registered and activated users can see links]
Lúc trước có lập trình LISP để phá MINSERT nhưng lêu rùi nên để đâu không tìm ra được. Bro search trên mạng sẽ có đó nhất là các web nước ngoài. Có trang bán chỉ vài USD, có trang free lun.
Mình sư tầm được lsp này của bọn nước ngoài ,các bác xem thử nhé :)

;;;--- XMINSERT - Replace a minsert entity with individual blocks arrayed.
;;;
;;;
;;;
;;;--- This program will delete the XMINSERT entity after an array is created.
;;; It will restore the attribute values contained inside the minsert.


(defun C:XMINSERT()



;;;--- Function to change an attributes value

(defun repAttVal(en tagName newVal)

;;;--- Get the DXF group codes of the entity
(setq enlist(entget en))

;;;--- Get the name of the block
(setq blkName(cdr(assoc 2 enlist)))

;;;--- Check to see if the block's attribute flag is there
(if(cdr(assoc 66 enlist))
(progn

;;;--- Get the entity name
(setq en(entnext en))

;;;--- Get the entity dxf group codes
(setq enlist(entget en))

;;;--- Get the type of block
(setq blkType (cdr(assoc 0 enlist)))

;;;--- If group 66 then there are attributes nested inside this block
(setq group66(cdr(assoc 66 enlist)))

;;;--- Loop while the type is an attribute or a nested attribute exist
(while(or (= blkType "ATTRIB")(= group66 1))

;;;--- Get the block type
(setq blkType (cdr(assoc 0 enlist)))

;;;--- Get the block name
(setq entName (cdr(assoc 2 enlist)))

;;;--- Check to see if this is the first attribute
(if(= blkType "ATTRIB")
(progn

;;;--- Get the attribute tag
(setq attTag(cdr(assoc 2 enlist)))

;;;--- Get the value of the attribute
(setq attVal(cdr(assoc 1 enlist)))

;;;--- If this tag matches our search tag name
(if(= (strcase tagName)(strcase attTag))
(progn

;;;--- Replace the attribute's value
(setq enlist(subst (cons 1 newVal)(assoc 1 enlist)enlist))
(entmod enlist)
(entupd en)
)
)
)
)
;;;--- Get the next sub-entity or nested entity as you will
(setq en(entnext en))

;;;--- Get the dxf group codes of the next sub-entity
(setq enlist(entget en))

;;;--- Get the block type of the next sub-entity
(setq blkType (cdr(assoc 0 enlist)))

;;;--- See if the dxf group code 66 exist. if so, there are more nested attributes
(setq group66(cdr(assoc 66 enlist)))

)
)
)
)









;;;--- Function to return a list of tags and values from attributes in a block

(defun getAttData(en / attList attVal enlist blkType group66)

(setq attList(list))

;;;--- Get the DXF group codes of the entity
(setq enlist(entget en))

;;;--- Check to see if the block's attribute flag is there
(if(cdr(assoc 66 enlist))
(progn

;;;--- Get the entity name
(setq en(entnext en))

;;;--- Get the entity dxf group codes
(setq enlist(entget en))

;;;--- Get the type of block
(setq blkType (cdr(assoc 0 enlist)))

;;;--- If group 66 then there are attributes nested inside this block
(setq group66(cdr(assoc 66 enlist)))

;;;--- Loop while the type is an attribute or a nested attribute exist
(while(or (= blkType "ATTRIB")(= group66 1))

;;;--- Get the block type
(setq blkType (cdr(assoc 0 enlist)))

;;;--- Check to see if this is an attribute
(if(= blkType "ATTRIB")
(progn

;;;--- If this matches your tag name
(setq attTag(cdr(assoc 2 enlist)))

;;;--- Get the value of the attribute
(setq attVal(cdr(assoc 1 enlist)))

(setq attList(append attList (list (list attTag attVal))))
)
)

;;;--- Get the next sub-entity or nested entity as you will
(setq en(entnext en))

;;;--- Get the dxf group codes of the next sub-entity
(setq enlist(entget en))

;;;--- Get the block type of the next sub-entity
(setq blkType (cdr(assoc 0 enlist)))

;;;--- See if the dxf group code 66 exist. if so, there are more nested attributes
(setq group66(cdr(assoc 66 enlist)))

)
)
)
attList
)

;;;--- Main application

(setvar "cmdecho" 0)

;;;--- If the user selects an object
(if(setq ent(entsel "\nSelect MINSERT: "))
(progn

;;;--- If it is an object selected and not an point
(if(setq en(car ent))
(progn

;;;--- Make a copy of the entity name
(setq origEn en)

;;;--- Get the entities dxf group codes
(setq enlist(entget en))

;;;--- Get the data from the minsert
(setq blkName(cdr(assoc 2 enlist)))
(setq layName(cdr(assoc 8 enlist)))
(setq insPt(cdr(assoc 10 enlist)))
(setq cols(cdr(assoc 70 enlist)))
(setq rows(cdr(assoc 71 enlist)))
(setq colWidth(cdr(assoc 44 enlist)))
(setq rowWidth(cdr(assoc 45 enlist)))
(setq xScale(cdr(assoc 41 enlist)))
(setq yScale(cdr(assoc 42 enlist)))
(setq rAngle(cdr(assoc 50 enlist)))

;;;--- If group code 66 exist [ attributes follow flag ]
(if(assoc 66 enlist)

;;;--- Get the group code 66
(setq group66(cdr(assoc 66 enlist)))
)

;;;--- If it equals 1 then attributes follow..so
(if(= group66 1)
(progn

;;;--- Turn off attribute request during insertion
(setq oldAttReq(getvar "attreq"))
(setvar "attreq" 0)

;;;--- Get the attribute tags and values
(setq attList(getAttData en))
)
)

;;;--- Insert the new block
(command "-insert" blkName insPt xScale yScale (angtos rAngle))

;;;--- If it had attributes ...
(if(= group66 1)

;;;--- Reset the attribute request
(setvar "attreq" oldAttReq)
)

;;;--- Get the last entity created...
(if(setq en(entlast))
(progn

;;;--- Get the group codes
(setq enlist(entget en))

;;;--- Get the name of the block
(setq blkName2(cdr(assoc 2 enlist)))

;;;--- If this is the block I just created...
(if(= blkName blkName2)
(progn

;;;--- If it has an attributes flag code...
(if(assoc 66 enlist)
(progn

;;;--- And attributes follow [code 66 = 1]
(if(= (cdr(assoc 66 enlist)) 1)
(progn

;;;--- Replace the attribute values
(foreach a attList
(repAttVal en (car a) (cadr a))
)
)
)
)
)

;;;--- Delete the minsert entity
(entdel origEn)

;;;--- Array the new block to represent the minsert entity
(command "-array" en "" "R" rows cols rowWidth colWidth)

;;;--- Inform the user
(setq str(itoa (* rows cols)))
(alert (strcat "Deleted MINSERT and added (" str ") blocks."))
)
)
)
)
)
)
)
)
(princ)
)

Rds ,

trungluu12
03-26-2010, 11:54 AM
Mình sư tầm được lsp này của bọn nước ngoài ,các bác xem thử nhé :)

;;;--- XMINSERT - Replace a minsert entity with individual blocks arrayed.
;;;
;;;Rds ,

chưa bít chạy được không nhưng ý đồ lập trình vậy là OK. Lấy thông tin đối tượng, tái lập lại đối tượng.
Thanks bro đã sưu tầm giúp anh em. Hiep-pro vẫn là Pro