Argh, I totally lost it. Let's just drop the theory discussion, and show me how to improve the code:

bone_info tool:

-- Get both entities we selected
-- I assume the ragdoll was selected first, and the prop next, so Ent1 = ragdoll, Ent2 = prop
local Ent1, Ent2 = self:GetEnt(1), self:GetEnt(2)
local Bone1, Bone2 = Ent1:TranslatePhysBoneToBone(self:GetBone(1)), Ent2:TranslatePhysBoneToBone(self:GetBone(2))
-- Retrieve bone positions and angles
local BonePos1 , BoneAng1 = Ent1:GetBonePosition( Bone1 )
local BonePos2 , BoneAng2 = Ent2:GetBonePosition( Bone2 )
-- DefBones is a table of strings with the HL2 bone names like "ValveBiped blablablab"
local defbone1, defbone2
for k, v in pairs(DefBones) do
if (Bone1 == Ent1:LookupBone( v )) then
defbone1 = v
end
if (Bone2 == Ent2:LookupBone( v )) then
defbone2 = v
end
end
-- Props often have -1 as bone index, and to be sure, I just get their normal position and angles.
if (Bone2 == -1) then
BonePos2 = Ent2:GetPos()
BoneAng2 = Ent2:GetAngles()
end
local relpos = BonePos2-BonePos1
local relang = BoneAng2-BoneAng1 -- <- RELATIVE ANGLE!?

Next is the SENT draw function.

NWVector("position") = relpos (from above code)

NWAngle("angles") = relang

NWString("bone") = defbone1 (name the of ragdoll bone)

function ENT:Draw()
if (LocalPlayer() == self:GetOwner()) then return end
local ply = self:GetOwner():GetRagdollEntity() or self:GetOwner()
local bone = ply:LookupBone(self:GetNWString("bone"))
if bone then
local position, angles = ply:GetBonePosition(bone)
local offset = self:GetNWVector("position")
local x = angles:Up() * offset.x
local y = angles:Right() * offset.y
local z = angles:Forward() * offset.z
local pitch = self:GetNWAngle("angles").p
local yaw = self:GetNWAngle("angles").y
local roll = self:GetNWAngle("angles").r
angles:RotateAroundAxis(angles:Forward(), pitch)
angles:RotateAroundAxis(angles:Right(), yaw)
angles:RotateAroundAxis(angles:Up(), roll)
self:SetPos(position + x + y + z)
self:SetAngles(angles)
self:DrawModel()
end
end

Please just show what you'd do with it, and I'll show the results.